GSON你应该知道的事

之前一直用 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串和对象互转的,这个比较简单,就不写了...

发布了51 篇原创文章 · 获赞 1 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/panlongbao_918/article/details/78273969