如何序列化/反序列化结构更加丰富的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用法,或者等待我下一篇文章更新吧!