1.前言

现在我们在开发中经常要和网络后台打交道,比如说访问网络后台数据,往网络后台发送post请求等等,那么这个时候我们一般会使用json数据来传输,原因就是json数据比较简单易懂,而且还方便解析。

我们之前学习的解析可能都是JsonObject和JsonArray,这个是android原生的,虽说比较易懂简单,但是如果我们需要的数据结构比较大,那么我们会写很多重复冗余的代码来解析数据。

Google针对于此,推出了Gson这个java类库专门解决这种问题,Gson一出现,方便了android开发者和后台服务端,gson使两者在协商完后只需要简单的几行代码就能完成大量的复杂的重复的操作,非常方便。今天就带着大家讲解一下Gson是如何使用的。

2.使用详解

(1)下载Google Gson包


https://github.com/search?o=desc&q=gson&s=stars&type=Repositories&utf8=%E2%9C%93

点击下载即可

(2)Gson的解析非常简单,但是它的解析规则是必须有一个bean文件,这个bean文件的内容跟JSon数据类型是一一对应的.比如我们现在创建一个bean对象:



androidgson android gson使用_androidgson


(3)Gson有两个重要的方法,一个就是tojson,一个就是fromjson。tojson就是将bean里面的内容转换为json内容。

androidgson android gson使用_json_02

(4)当然它还可以承担一些复杂的操作,比如通过集合插入一组数据,然互把存有该bean的集合转化为json内容。



androidgson android gson使用_androidgson_03



(5)fromjson,从我们的Json对象封装出一个一个的bean对象,注意下图中fromJson方法中第二个参数是bean的字节码文件。


androidgson android gson使用_字节码_04



(6)如果你的Json里面不止一个对象,那么你就得使用一个集合来装,我们这里模拟一个list来装的例子,在使用list装的过程中我们会使用到一个工具类,typeToken,通过它我们可以获取一个泛型的数据类型,使用方法十分简单,TypeToken(泛型)(){}.gettype()即可,返回一个type类型,这就是fromjson所需要的type类型,来自于reflect包。


androidgson android gson使用_gson json解析_05



简单的说,就是如果json字符串中只有一组bean的信息,那么很简单,只需要在fromJson的第二个参数里传入bean对象的字节码文件即可。

但是如果json字符串中有很多组bean对象的信息,那么第二个参数就不能传字节码文件了,那么传什么呢?没错,也是字节码文件,但是是TypeToken对象的字节码文件,TypeToken里装的是bean对象的集合,然后通过反射的机制得到的字节码文件。

3.如何练习?


(1)下载gson,并导入到eclipse中,方便我们使用;

(2)构造一个复杂的javabean;

(3)在主函数中创建若干个javabean对象,然后练习使用toJson来生成json数据;

(4)自己构造一个复杂类型JSON字符串,然后利用fromJson方法来吧JSON字符串转变成为javabean对象的list集合;

(5)Gson实战:到聚合数据申请新闻频道数据,获取json字符串,构造相应的javabean对象,然后用Gson中的fromJson方法来吧json数据转化成为javabean对象的list集合。