GSON基础用法-如何序列化/反序列化JSON

如何序列化/反序列化结构更加丰富的JSON? 如何序列化/反序列化结构更加丰富的JSON?

上面我们介绍了如何进行简单序列化/反序列化操作,但是如何操作一些比较复杂的JSON呢?
比如: {"data":{"id":1,"timestamp":1584613708},"user":{"name":"VioletTec","age":6}}
像这样的比较复杂的JSON如何操作呢?我们可以分析一下他的结构,写出一个JavaBean,在JavaBean里,我们可以写一个静态的内部类来接受复杂的json数据。

public class Datas{
  public Data data;
  public static class Data{
    public int id;
   	public  Long timestamp;
   }
  public User user;
  public static class User{
    String namel;
    int age;
  }
}
public static void main(String[] args) {
		String json = "{\"data\":{\"id\":1,\"timestamp\":1584613708},\"user\":{\"name\":\"VioletTec\",\"age\":6}}";
		Gson g = new Gson();
		Datas d = g.fromJson(json, Datas.class);
		System.out.println(d.user.age);//获取Datas类中的内部类User中的成员变量age
}

如果JSON数据为多组数据的话,也可以使用容器中套容器对其进行反序列化
如JSON: {"data":[{"id":1,"timestamp":1584613708},{"id":2,"timestamp":1584613710}]}

public class Datas {
	  public Vector<TreeMap<String,Long>> data;
}
String json = "{\"data\":[{\"id\":1,\"timestamp\":1584613708},{\"id\":2,\"timestamp\":1584613710}]}";
		Gson gson = new Gson();
		Datas d = gson.fromJson(json, Datas.class);
		System.out.println(d.data.get(0).get("id"));//获取Datas里的Vector内的第一个成员TreeMap中key为id的数据

以上就是Gson的一些基本的序列化/反序列化的操作,但是不知道你们注意到没有,以上的几个例子都是直接使用的new Gson() 直接new出来GSON,但是我们一般情况下使用的是GsonBuilder,具有更加自定义话,更加丰富的JSON操作,可以选择很多的选项,如果你想要了解的话,可以百度一下 GsonBuilder用法,或者等待我下一篇文章更新吧!

页面: 1 2
标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code