本篇文章包括以下内容:
- JSON是什么
- JSONObject的解析和存储
- JSONObject的解析和存储(抽象)
- JSONArray的解析和存储
- 模拟周边加油站JSON数据实战
JSON:JavaScript对象表示法(JavaScript Object Notation)
- JSON是存储和交换文本信息的语法
- JSON是轻量级的文本数据交换格式
- JSON独立于语言和平台
- JSON具有自我描述性,更易理解
类似XML,比XML更小、更快、更易解析
- 没有结束标签
- 更短
- 读写的速度更快
- 使用数组
- 不使用保留字
JSON语法是JavaScript对象表示法语法的子集
- 数据在名称/值对中
- 数据由逗号分割
- 花括号保存对象
- 方括号保存数据
JSON值可以是
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true或false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
JSONObject数据是用key-value来存储的,中间使用冒号隔开,外层的花括号表示一个对象
首先创建一个存储数据的Bean类
下面我们使用将服务器获取的JSON数据放进一个JSON对象中,获取其对象中的值
我们会碰到在一个JSON中嵌套有其他JSON对象,而这个嵌套的JSON对象中可以抽象出共同的属性,看例子
这个时候我们就不用创建两个对象了,创建一个对象抽取他们的属性即可
首先创建一个存储数据的Bean类
然后我们解析并存储
通过遍历JSONArray,剩下的跟JSONObject一样,
这里以周边加油站数据为例,其解析步骤有
- 分析数据中的成员变量(花括号为对象,方括号为数组,使用List存储数组)
- 根据分析后的结果,创建对应的对象
- 解析JSON数据、存储JSON数据
大家可以尝试一下自己写解析,发现哪里不对时,直接运行程序,系统会自动给你提示哪一行解析出错的
一、分析数据中的成员变量
在JSON中,只有两种语法,JSONObject(花括号内)和JSONArray(方括号内)
- JSONObject:可以理解为一个Map集合,通过get获取value
- JSONArray:可以理解为一个数组,通过循环获取对应的JSONObject
从上面的数据可以发现其中有五个JSON对象,一个JSON数组,从外到里分析
对象1~4:
对象5:在最后面
二、根据分析后的结果,创建对应的对象(按循序从1~5)
在JSONObject中,左边是属性,右边是值
如果右边的值为一个JSONArray,则在对象中使用List< Object>来存储,简单的说就是对象中的List嵌套另一个对象
记住:花括号用对象,方括号用集合
根据上面的分析,创建第一个对象
创建第二个对象
创建第三个对象
创建第四个对象
创建第五个对象
三、解析JSON数据、存储JSON数据
由于数据对象是一层嵌套一层的,这个解析思想跟树的遍历是一个道理,中老年服装从外层->内层->外层,所以我们在解析内层的时候是需要边解析边存储我们的数据
数据的解析和存储
由于我们第四个对象是嵌套在第三个对象数组中的,所以在里面再嵌套一层循环
由于第四个对象是同一性质的属性,所以我们抽象成一个属性为type和price的对象,其key是不确定的,需要自己通过keys遍历来获取value
接着我们输出我们解析的结果
效果图