Android-Gson小总

作者: 薛之涛 | 来源:发表于2018-06-17 20:08 被阅读42次

几乎每次项目中都要用到Gson来解析json数据,今天想做个总结。ok,现在我们先来了解一下JSONObject和JsonObject的区别(我个人总结了三点):上图。

可以一眼看到他们的不同:

(1)不同包。JSONObject是android自带的org.json包中,而JsonObject则是google.gson包下的需要添加build.gradle依赖:implementation'com.google.code.gson:gson:2.8.0'

 除此之外,我们先看看他们怎么存json数据吧,先看Android自带的JSONObject:

创建:

打印

打印结果:

总结,就是通过new JSONObject和JSONArray对象,让后put()进去即可。

我们看一看google推荐的gson是如何存储json数据的:

总结:JsonObject调用addProperty()添加value值,但如果添加的JsonArray则需要调用add()方法,这和android自带的JSONObject有点不同.也稍微麻烦点。

(2)第二个不同,我们都知道Android JSONObject是通过HashMap来存储key/value值,那么google的JsonObject是不是一样呢?上图:

这就是不同了:Anroid自带JSONObject是通过HashMap来存值而Google的JsonObject是通过LinkedTreeMap来存值,感兴趣的同学可以了解一下二者的区别.

(3)第三点不同,我们给之前的数据添加一个value为null的键值对。看两者的效果,上图:

打印结果:

总结:第三点不同就是:  Android自带的JSONObject如果value为null,会删除该键

                                        google的JsonObject如果value值为null,仍会保留该键

本人最近发现在高版本的gson中已经没有JsonObject了(比如2.8.5),但是有JsonReader可以继续解析,不知道是不是不推荐了,这里就不跟大家详聊了..

说完了区别,我们来说一说常见的Gson与各种类型的转化

 一:生成json

这个我们之前代码已经体现出来了:


值得一提的是:addProperty 方法底层调用的还是 add(String property, JsonElement value) ,他是将基本数据类型转化为了 JsonElement 对象,JsonElement 是一个抽象类,而 JsonObject 是继承了 JsonElement 的,所以我们可以通过 JsonObject 自己来构建一个 JsonElement。

如图:


打印:



数据结构:

如果我们JsonObject对象包含的key都叫name的话,我们就只会有一个name = "王五"的。只会保留最后一个。

二:json和数组之间的转化。



总结:其实就是gson.fromJson()和toJson()的调用

三:Json数组和List之间的转化


打印:

总结:其实还是调用gson.fromJson()和toJson()方法,只不过后面的参数不同,是通过TypeToken,最后getTyep();


好了常用的就这么多,剩下的比如:属性重命名,字段过滤啥的,不常用。以后用到再说吧,我去看世界杯了。

相关文章

  • Android-Gson小总

    几乎每次项目中都要用到Gson来解析json数据,今天想做个总结。ok,现在我们先来了解一下JSONObject和...

  • Android-Gson使用

    在日常的Android开发当中,我们肯定少不了要使用Gson框架解析JSON字符串。这篇博客分享一下我了解到Gso...

  • 小总

    我的2016 一年过去了,年初的时候,还信心满满的说要娶某个人,结果16年还没...

  • 读书小总

    现在我所读的书只是浩瀚书海中的小小一角,称不上破万卷,更谈不上学富五车。但我仍然会坚持我这一个小小癖好,并且会从更...

  • 小总的事

    小总可能混不下去了。 小总是个天生的乐天派,没有到绝路从来不会轻易说No,而且总能够在困难中让自己乐呵起来的点。 ...

  • SpringBoot 知识小总

    前言 这篇文章是我初学SpringBoot时开始记录的一篇博客。原本学习时是持续更新的,后来慢慢学习的过程中断更了...

  • 起点——小总手札

    工作十几年,研发、管理、产品都干过。 呆过通讯、电商、互金,直到目前类创业,服务于创业者。 从超大公司、大公司到小...

  • 目录【小甜甜总教程】

    001-MUI 002-JavaWeb 003-Struts2

  • 顾总的小娇妻

    ‘不,不要’,谢楚乔挣扎着。顾贤文用手把谢楚乔的双手给压住了,在她耳边暧昧地说:‘宝贝,这是你引起的火,你就必须给...

  • 「小程序」文集总录

    组件集 「小程序」map组件层级之上实现cover-input 「小程序」map组件层级之上实现cover-pro...

网友评论

    本文标题:Android-Gson小总

    本文链接:https://www.haomeiwen.com/subject/dovseftx.html