由Gson将Java对象转为Json串,该对象中包含list集合和对其它对象的引用。以及Java基本数据类型。
import java.util.ArrayList; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; /**Gson Java对象生成Json测试 * @author 曙光城邦 * */ public class GsonTest { /* * 创建Gson对象 ,模式为excludeFieldsWithoutExposeAnnotation 即没有@Expose注解的属性忽略 * 常用注解:@SerializedName("className") 指定Json的键值对的Key名 * @Expose 暴漏该属性。就可以序列化和反序列化。 */ public static void main(String[] args) { GsonBuilder builder = new GsonBuilder(); Gson gson = builder.excludeFieldsWithoutExposeAnnotation().create(); /*创建老师*/ Teacher teacher = new Teacher(); teacher.name="张老师"; teacher.numId=100123.23f; /*创建两个学生*/ Student student1 = new Student(); student1.name="张三"; student1.age=21; Student student2 = new Student(); student2.name="李四"; student2.age=24; /*创建班级*/ Class myClass = new Class(); myClass.className="终极一班"; myClass.classNum=101010; myClass.isOpen=true; myClass.teacher=teacher; myClass.students = new ArrayList<Student>(); myClass.students.add(student1); myClass.students.add(student2); /*----------输出班级的Json信息*/ String jsonString = gson.toJson(myClass); System.out.println(jsonString); /* * 输出的jsonString { "className":"终极一班", "classNum":101010, "isOpen":true, "teacher": { "name":"张老师", "numId":100123.23 }, "students": [ {"name":"张三","age":21}, {"name":"李四","age":24} ] } */ } /**班级 * @author 曙光城邦 * */ public static class Class{ /*-------------Json基本数据类型-原始类型*/ @SerializedName("className")@Expose public String className; /*班级名称[字符串]*/ @SerializedName("classNum")@Expose public int classNum; /*班级编号[数字]*/ @SerializedName("isOpen")@Expose public boolean isOpen; /*课程是否开放 [boolean]*/ @SerializedName("other")@Expose public String other; /*其它信息 [null] 不赋值.为null的没输出*/ /*-------------Json基本数据类型-结构类型*/ @SerializedName("teacher")@Expose public Teacher teacher; /*老师 [对象]*/ @SerializedName("students")@Expose public ArrayList<Student> students; /*所有学生 [数组]*/ } /**学生 * @author 曙光城邦 * */ public static class Student{ @SerializedName("name")@Expose public String name; @SerializedName("age")@Expose public int age; } /**老师 * @author 曙光城邦 * */ public static class Teacher{ @SerializedName("name")@Expose public String name; /*老师名称*/ @SerializedName("numId")@Expose public float numId; /*老师编号*/ } }