• 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

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

    效果图

  • 相关阅读:
    学习笔记之jq
    学习笔记之pytest
    本月学习小结(01/10
    本月学习小结(01/09
    学习笔记之Poetry
    学习笔记之Dynaconf
    学习笔记之asyncio — Asynchronous I/O
    Redis 根据key获取所有 HashKey
    Java ffmpeg 合成音视频文件
    Redis 存储中文方式
  • 原文地址:https://www.cnblogs.com/zhanglixina/p/9597561.html
Copyright © 2020-2023  润新知