zoukankan      html  css  js  c++  java
  • 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

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

    效果图

  • 相关阅读:
    A Node Influence Based Label Propagation Algorithm for Community detection in networks 文章算法实现的疑问
    Fast Newman-FN算法以及模块度定义介绍
    Label Propagation Algorithm LPA 标签传播算法解析及matlab代码实现
    设计一个smartnic
    Intel GEN11 GPU
    Intel GEN9 GPU
    Shared Virtual Memory (SVM) Functions
    connect via ssh to virtualbox guest vm without knowing ip address
    smartnic
    技术精品翻译
  • 原文地址:https://www.cnblogs.com/zhanglixina/p/9597561.html
Copyright © 2011-2022 走看看