Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
来源:互联网 发布:新疆大学网络教育平台 编辑:程序博客网 时间:2024/05/17 22:57
版权声明:本文为博主原创文章,博客地址:http://blog.csdn.net/qq_26787115,未经博主允许不得转载。
目录(?)[+]
Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的好用,今天我们为了博客的保质保量,也就不分开写,我们直接拿比较火的Gson和Fast-json来使用,末尾在进行一些分析
- Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示
一.各有千秋
两大解析库的东家都是巨头,一个来自于Google官方,一个来自阿里巴巴,我们这里对他做一个简单的介绍(大多数来源于网络)
Gson
Google提供的用来Java对象和JSON数据之间进行映射的JAVA类库,可以将一个JSON字符转成一个java对象,或者反过来
来看看他的优点
- 快速,高效
- 代码量少
- 面向对象
- 数据传输解析方便
Fast-json
FastJson是一个性能很好的java语言实现的Json解析器和生成器,来自阿里巴巴的工程师,具有极快的性能,超越其他的Java json parser,而阿里的工程师程,fastjson是闲着全球最快的解析库
优点
- 快速FAST(比任何一款都快)
- 面向对象
- 功能强大(支持普通JDK类任意java bean Class,Collection,Map,Date或者enum)
- 零依赖(只需要有JDK即可)
- 支持注解,全类型序列化
二.Gson的使用
Gson的使用,我们直接定义一个实体类然后进行转换
- Gson API:https://sites.google.com/site/gson/
- Jar下载:https://github.com/google/gson
这里我们使用到的就是Gson和Volley,所以我们需要下载好这两个架包,对了,别忘了权限
- 1
- 1
这里我们用到的接口是豆瓣的接口
- https://api.douban.com/v2/book/1220562
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
我们分析一下这段json,实际上他很普通,就是一个数据里面一个数组,我们用Gson应该怎么去解析呢?我们先写个方法区解析这个接口得到这个Json再说吧
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
解析之后得到的json就是上面的那句了
OK。轮到我们的Gson上场了
我们要解析什么就写什么,所以定义一个Bean
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
同样的,我们json里面由数组,所以需要再定义一个
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
好了,现在我们直接解析了,一句话的事情
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
我们直接看运行点击结果
这里要注意几点
- 1、内部嵌套的类必须是static的,要不然解析会出错;
- 2、类里面的属性名必须跟Json字段里面的Key是一模一样的;
- 3、内部嵌套的用[]括起来的部分是一个List,所以定义为 public List< B> b,而只用{}嵌套的就定义为 public C c,
是不是很简单,而且现在Android studio上可以直接用插件生成实体类,那更加方便了
三.Fast-Json
OK,感受了Gson的强大之后,我们再来看看fastjson的奇妙之处吧;
- Github:https://github.com/alibaba/fastjson/releases
我们需要下载架包,网上一大堆哈
前面都一样,定义两个实体类,使用Volley解析,我们重点来看一下Volley_json这个方法,这两个的用法也很像
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
只需这样,就可以解析了
但是你会说,这些都这么简单,的确,架包就是用来方便开发的,我们用一个小案例来总结这两个jar吧
四.图书列表
现在的接口,从哪里来呢,一直看博客的朋友应该知道,我喜欢去聚合数据找免费的api做演示,所以今天使用到的接口也是
APPKEY:eab1de650b181e91da30526a3e59541b
接口:http://apis.juhe.cn/goodbook/catalog?key=eab1de650b181e91da30526a3e59541b&dtype=json
得到的json
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
貌似比较简单,里面就一个数组
我们按部就班,先用volley把json解析出来
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
接着我们准备显示的layout,就是一个ListView,然后我们的item也就是一个TextView,这样的话,我们可以直接写实体类了
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
以及列表的适配器
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
然后我们就可以解析数据开始填充了
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
运行的结果总所周知
到这里,本篇博客就结束了,本篇博客还是十分的基础,没有牵扯太深,只是简单的介绍和使用了一下这两个框架,我们后续可能会出一些稍微高级的博客!
有兴趣和我们一起交流撩妹的可以加群:555974449
Demo下载:http://download.csdn.net/detail/qq_26787115/9527296
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
- JSON 解析库的使用 :Gson 和 fast-json比较
- Android JSON:Gson,FastJson解析库的使用和对比分析
- android:json解析的两个工具:Gson和Jackson的使用小例子
- android中json解析的两个工具:Gson和Jackson的使用小demo
- android:json解析的两个工具:Gson和Jackson的使用小例子
- android:json解析的两个工具:Gson和Jackson的使用小例子
- Android 使用Gson解析json案例详解
- Android 使用Gson解析json案例详解
- Android 使用Gson解析json案例详解
- Andorid中使用Gson和Fast-json解析库解析JSON数据---第三方库学习笔记(二)
- Android常用Json解析框架GSON和FastJson的使用
- android-关于Gson和json的解析转化使用
- 第三方库-Gson和Fast-json
- json解析库gson和fastjson使用
- Android中XML和JSON数据的解析小案例
- Android基础--搭建
- Windows下安装composer
- 科技英语写作中的动词时态和冠词的使用问题
- poj 3984 迷宫问题(bfs)
- 输入框内容偏右,与左侧边缘有一定距离
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
- 硬货
- 我为什么要写博客?及博客学习的方法
- 算法(第4版) 学习笔记一——求最大公约数
- 【Hibernate框架学习】:Hibernate进阶之持久化对象状态
- jQuery插件之ajaxFileUpload
- ThinkPHP使用header()的问题
- java大全
- hadoop 2.6.0 伪分布式搭建