GSON你应该知道的事

来源:互联网 发布:改号软件 编辑:程序博客网 时间:2024/05/20 16:00

之前一直用 fastjson, 但目前项目中使用的是GSON, 两者的性能在请求数据量不太的情况下差不多。。

本文适用于不了解GSON的同学,如果你已经了解了,完全可以不看,

至少之前,我是很烦燥JsonPrimitive JsonElement JsonObject JsonArray这几个东西的。对GSON了解得也很浅,只会baidu搜索它的用法,然后遇到错误了也不知道该如何解决。

直到后来,我看了它的源码,哈哈

下面从源码的角度去分析该如何解析获取到的字符串。。看看这个类图,已经很简化了。。




为了更好的理解,我写一个基本的JSON串:

{    “result”:1,    "data":[        {"name":"david", "age":1,"sex":1},        {"name":"lilei", "age":1,"sex":1}    ],    "mesage":"request ok"}


JsonElement  :  它就是一个抽象类,一堆公共的方法申明,没有实现体,不用管它

JsonPrimitive :  里面只有一个成员变量Object  , 相当于一个确定的值,它可以是1, david 等基本数据类型 

JsonObject  :   还是看它的成员变量 LinkedTreeMap<String, JsonElement> members, 只有一个LinkedTreeMap, 它是一个树类型的MAP, 它可以是整个JSON串,数据是键值类型

JsonArray :   继续看它的成员变量 List<JsonElement> elements = new ArrayList(), 就是一个列表,可以看到data后面的列表数据。要知道在JSON串里面,大括号表示的是对象,中括号表示的是数组。。


了解了这些,感觉你自己应该会使用GSON解析了吧!

对了,还有一个JsonParser解析类,使用它来解决JSON串,得到的结果是JsonElement, 你可以再次把它强转为JsonPrimitive , JsonObject, JsonArray,都可以,主要看你的数据定义的结构。


还有一种解析方法是直接使用fromJson  toJson,对JSON串和对象互转的,这个比较简单,就不写了...

原创粉丝点击