JSON-JSONArray-JSONObject--Map-List那些事

我是一只斑马
https://blog.csdn.net/JzCm__/article/details/89222537

认真看完文章基本要会
区别: JSON.parseObject(String str)与JSONObject.parseObject(String str)

一、JSON

  • JavaScript Object Notation —— JS标记对象。
  • 格式简单,每个参数都是一个键和值。解析速度快,可以用来代替XML文件。JSON可以封装一个对象,封装集合。

一般有三种格式表示

  • 对象类型:{键:值,键:值}
  • 数组/集合类型:[元素1,元素2,元素3]
  • 混合类型:[{键:值},{键:值},{键:值}] 或 {键:[元素1,元素2]}

二、JSONObject和JSONArray的数据表示形式

JSONObject的数据是用 { } 来表示的,另,算是一种特殊的Map,有着put(key,value)的方法

    例如:   { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null  }  

而JSONArray,顾名思义是由JSONObject构成的数组,用 [ { } , { } , … , { } ] 来表示另,算是一种特殊的List,有着add(Object)的方法

   例如:   [ {  "id" : "123", "courseID" : "huangt-test", "title" : "提交作业" }  ,  {  "content" : null, "beginTime" : 1398873600000  "endTime" } ] ; 

    表示了包含2个JSONObject的JSONArray。

可以看到一个很明显的区别,一个最外面用的是 { } ,一个最外面用的是 [ ] ;

三、JSON和JSONObject和JSONArray的关系和方法来源

  1. 先看JSON和这两者的关系
    JSON家庭族谱
    可以看到这两个都是继承了JSON,所以具有类似的方法(效果是一样的)
  2. 常用方法
    通常会得到(前端到后端)JSON格式的字符串,需要对这个数据进行解析(增加或者…);
    第一点: 判断是哪一种格式,对应使用JSONArray或者JSONObject的方法
    第二点: 转换 JSONArray data = JSONArray.parseArray(dataStr);
    第三点: 此时得到的 data,就是一个特殊的List集合,就可以get(index), 或者add(Object)…
    第四点: 如果是JSONObject.parseObject()也是一个道理
  • 其实没有什么复杂难记,这就是考验自己看源码的时候;看看源码,对它的方法看得更加全面

四、服务器端 json的转换工具

  1. Jsonlib, Gson, Jackson, Fastjson
  • 首推Fastjson
  1. 这个是拿来干什么的呢?那就是反过来;
  • 作用:用于将服务器端的对象或集合转成一个JSON字符串对象
  1. 使用步骤,太简单,一张图说明
    JSON-JSONArray-JSONObject--Map-List那些事_第1张图片

五、JSON.parseObject(String str)与JSONObject.parseObject(String str)的区别

  • 认真看过第三点就该知道
  • 根据源码显示:JSON是一个抽象类,JSON中有一个静态方法parseObject(String text),将text解析为一个JSONObject对象并返回;JSONObject是一个继承自JSON的类,当调用JSONObject.parseObject(result)时,会直接调用父类的parseObject(String text)。所以两者没什么区别,一个是用父类去调用父类自己的静态的parseObject(String text),一个是用子类去调用父类的静态parseObject(String text),两者调的是同一个方法。

你可能感兴趣的:(Java,JS,JavaWeb,JavaBasic,JavaWeb,Java,SpringSSM,JS)