天天看点

Gson转换json全解

       通常我们使用的json有三种格式:第一种,{"name":"天天","age":18},

                                        第二种,[{"name":"天天","age":18},{"name":"洋洋","age":20}],可以把它看成一个json数组,

                                      第三种{"classesName":"yy1203","stus":[{"name":"天天","age":18},{"name":"洋洋","age":20}]},这种json是比较重要的,因为它涉及到了实体类之间的关联关系。

      使用Gson解析json时需要添加gson.jar包

       请看第一种json的解析,

           首先创建一个实体类Student,实体类中的属性与json中的key相同:

public class Student {

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

      进行测试:

public static void main(String[] args) {

               //拼接json时需要对引号进行转义

String json="{\"name\":\"天天\",\"age\":18}";

Gson gson=new Gson();

Student stu=gson.fromJson(json, Student.class);

System.out.println(stu.getName()+";"+stu.getAge());

}

输出的结果为:天天;18

         第二种json的解析:

import java.lang.reflect.Type;

import java.util.List;

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

public class Test {

public static void main(String[] args) {

String json="[{\"name\":\"天天\",\"age\":18},{\"name\":\"洋洋\",\"age\":20}]";

Gson gson=new Gson();

Type type=new TypeToken<List<Student>>(){}.getType();

List<Student> stus=gson.fromJson(json, type);

for(Student stu:stus){

System.out.println(stu.getName()+";"+stu.getAge());

}

}

}

输出的结果为:

     天天;18

     洋洋;20

     请看第三种json的解析,也是非常重要的,因为它涉及到了实体类之间的关联关系,我们还需要一个班级实体类Classes:

import java.util.LinkedList;

public class Classes {

private String classesName;

private LinkedList<Student> stus;

public String getClassesName() {

return classesName;

}

public void setClassesName(String classesName) {

this.classesName = classesName;

}

public LinkedList<Student> getStus() {

return stus;

}

public void setStus(LinkedList<Student> stus) {

this.stus = stus;

}

}

进行测试:

import java.util.LinkedList;

import com.google.gson.Gson;

public class Test {

public static void main(String[] args) {

String json="{\"classesName\":\"yy1203\",\"stus\":[{\"name\":\"天天\",\"age\":18},{\"name\":\"洋洋\",\"age\":20}]}";

Gson gson=new Gson();

Classes cls=gson.fromJson(json, Classes.class);

System.out.println(cls.getClassesName());

LinkedList<Student> stus=cls.getStus();

for(int i=0;i<stus.size();i++){

Student stu=stus.get(i);

System.out.println(stu.getName()+";"+stu.getAge());

}

}

}

输出结果为:

yy1203

天天;18

洋洋;20