原地址:http://blog.csdn.net/android_lyp/article/details/52072822
JSON解析之原生解析
JSON是首先一种数据结构,说白了就是对数据的描述,刚刚出现是为了取代XML可惜并没有,但是在做为配置文件上,却是很好,由于它小巧灵活
描述数据很好,所以在网络上进行数据传输更加方便
- 请记住JSON对数据的描述形式,既然是形式,那么它的数据形式是什么样的:
- 对象的描述是: {}
- 数组的描述是: []
- 属性或值的描述是: “”
- 连接之间的描述是: :
比如 :
{
"description":"天狗实时事件:娱乐热点事件,娱乐热词排行 做最好的娱乐热点、热词提取;推送最新的娱乐实时事件,挖掘最新的娱乐热词。",
"id":2,
"keywords":"娱乐热点事件 娱乐热词排行 天狗实时事件",
"name":"娱乐热点",
"seq":2,
"title":"娱乐热点事件_娱乐热词排行-天狗实时事件"
}
表示: 首先有{}的描述,说明它是个对象, 再进行观察:里面都是 “Name”:”xiaoming”或”Name”:值, 这个表示如: description这个字段的描述是”天狗实时事件:娱乐热点事件,娱乐热词排行 做最好的娱乐热点、热词提取;推送最新的娱乐实时事件,挖掘最新的娱乐热词。” 接着id 为2 ,name为”娱乐热点” 说白了,就是这个对象就是对事件的描述,它的id是多少,关键字是什么,标题是什么,都会进行描述, 用Java面向对象的思想来说,这就是个javaBean对象,对一个的对象属性的描述。
那么有多个对象在一起就成了数组对象,比如这种形式
[
{"name":"xiaomang"},{"name":"yaya"},
{"name","meimei"},{"name","youyou"}
]
上面就是一个数组对象,实际上的数据描述很复杂,不单单是2个字段,这里我只是做示范而已
以上就是对JSON的简单介绍,下面开始JSON的数据解析,这篇我只是对原生的JSON数组进行解析
-
首先我们准备工作
-
数据接口api,我用http://www.tngou.net/天狗的api,其实一开始我学习的时候,根本不知道什么是数据接口,也不知道http://www.tngou.net/给我一个网址是什么意思啊,也没有对我说,没办法自学,总是像瞎子一样,手上有什么都不知道是什么,更别说怎样用了,但是别忘记了,我们是有这个知识却不知道怎样用而已,一旦会了, 就比别人理解的更深入,现在知道了吧,一些人经常说的天气api,新闻api什么的吧,说白了,就是一个网址,你用http请求,它就会给我们一些数据,然后我们再进行解析。
-
我们有了接口api,进行数据请求,发现却是乱码的,看不清的,甚至数据看不懂的,也不知道是什么意思的数据,这是因为,数据我们没有格式化,我们当然看不懂了,那么我们现在就要对数据进行格式化,怎么做了,用工具, 把数据copy, 放到工具就好 ,网络上工具很多,最简单是就是在线JSON工具了,如http://json.cn/ 这个就可以
-
开发工具 这个看自己用什么了,我用的是IDEA java ,你也可以用eclpise,这个不用解释,既然看json解析,说明你至少学会一门高级语言了
-
解析包jar ,我这篇是用原生的JSON解析,所以我只用了json-20151123.jar,就可以了,文章最后我会把所有的jar,工具发到这里
-
-
-
那就编码吧
——–进行解析时,我们会要对JSON进行解析,得到javaBean对象,在使用json.jar的api进行代码解析,这是总体思路,但是我想我说的是javaBean对象,我目前不使用JsonFormat,GsonFormat等这些扫插件工具,而是手动创建javaBean对象,因为我们懂得如何手动创建javaBean对象,就可以在工具出问题的时候,自己解决,而不是不知道怎样办,工具并不是完美的,它也会出错的!
- 手动创建javaBean对象的看JSON数据,请记住:拿到一些JSON数据,首先看符号, 有个原则,从外到内看,看到{}这个是个对象,就创建对象,看到[]就创建数据,但是这里有个问题,看![{},{}],这个看,1. 创建一个List容器 2. 再看里面,{}就创建对象,说明这个容器的泛型就是这个对象
开始解析
-
发送api,看看返回的JSON数据
http://www.tngou.net/api/top/classify
-
用工具格式化数据
-
仔细察看JSON数据结构,进行手动创建javaBean对象
原则: {}: 创建对象 [] 创容器
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 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
- 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
请求网络自然需要http
- 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
- 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
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
核心代码
- 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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
注意事项: 在手动创建javaBean对象时,数据字段要和JSON数组尽量一致