Android基础——JSON数据的全方位解析


本篇文章包括以下内容:

  • 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

接着我们输出我们解析的结果

效果图

原文地址:https://www.cnblogs.com/zhanglixina/p/9597561.html