JSONObject和JSONArray的区别是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSONObject和JSONArray的区别是啥相关的知识,希望对你有一定的参考价值。

JSON有两种结构:(1)对象和(2)数组。
(1)对象结构以””大括号开始,以””大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

"1": "2",
"4": "5"

其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组
(2)数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。

[

"1": "2",
"4": "5"
,

"1": "2",
"4": "5"

]
参考技术A 区别在于JSONObject是一个包裹起来的一个对象(Object),
而JSONArray则是[]包裹起来的一个数组(Array),
说白点就是一个是数组一个是对象或字符串
参考技术B JSONObjec 有键名,JSONArray没有。
所以解析的时候JSONObject是JSONObject.getString("msg"),
而JSONArray是JSONArray.getString(5),这个数字5是位置
参考技术C

区别是JSONObject是一个对象,JSONArray是一个数组。

具体步骤如下:

    JSONObject是一个包裹起来的一个对象(Object),而JSONArray则是[]包裹起来的一个数组(Array)。

    JSONObjec 有键名,JSONArray没有。

    所以解析的时候JSONObject是JSONObject.getString("msg"),而JSONArray是JSONArray.getString(5),其中这个数字5是位置。

参考技术D JSONArray由一个或者多个JSONObjec 组成

JSONObject和JSONArray的基本使用

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

JSONObject的数据是用 {  } 来表示的,

        例如:   { "name" : "佩奇", "weight" : 50 }  

而JSONArray,顾名思义是由JSONObject构成的数组,用  [ { } , { } , ......  , { },"字符串" ]  来表示

       例如:   [ {  "name" : "佩奇", "weight" : 50 }  ,  {  "name" : "麦兜", "weight" : 50 ,"height" : 180} ,"小猪信息"] ; 

        表示了包含2个JSONObject的JSONArray。

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

二、JSONObject添加元素put(key,value)方法和调用元素方法get(key)

1.put(key,value)方法

put(key,value)其中key是键名,一般为字符串,用于调用后边的value,

value的值为String或JSONObject或JSONArray对象

2.get(key)

get(key),key为键名

getJSONObject(key),key为键名,返回JSONObject对象

getJSONArray(key),key为键名,返回JSONArray对象

实例如下

         JSONObject student = new JSONObject();
         /*
          * put(key,value)其中key是键名,一般为字符串,用于调用后边的value,
          * value的值为String或JSONObject或JSONArray对象
          */
         //put(key,value)添加String对象
         student.put("name", "小明");
         student.put("sno", "20160000");
         
         JSONObject address = new JSONObject();
         address.put("city", "石家庄市");
         address.put("country", "长安区");
        //put(key,value)添加JSONObject对象
         student.put("address", address);
         
         JSONArray family = new JSONArray();
         JSONObject father = new JSONObject();
         father.put("name", "小明老爸");
         father.put("age", 40);
         JSONObject mother = new JSONObject();
         mother.put("name","小明老妈");
         mother.put("age",41);
         /*add(value)是JSONArray对象添加元素方法
          * value可以是String和JSONObject对象或JSONArray对象
          */
         family.add(father);
         family.add(mother);
         //put(key,value)添加JSONArray对象
         student.put("family", family);
         /*
          * JSONObject对象调用元素用get(key)方法
          * key为键名
          */
         System.out.println(student.get("name"));
         //输出结果  小明
         System.out.println(student.get("sno"));
         //输出结果 20160000
         
         
         /*
          * JSONObject对象(jsonObject)调用JSONObject对象元素(两种方法)
          * 1.jsonObject.getJSONObject(key),key为键名,返回JSONObject对象
          * 2.(JSONObject)jsonObject.get(key),key为键名,获得JSONObject对象
          * 
          */
         System.out.println(student.getJSONObject("address"));
         System.out.println((JSONObject)student.get("address"));
        //以上两种获取结果相同都是
         //{"city":"石家庄市","country":"长安区"}
         
         
         /*
          * JSONObject对象(jsonObject)调用JSONArray对象元素(两种方法)
          * 1.getJSONArray(key),key是键名,返回JSONArray对象
          * 2.(JSONArray)jsonArray.get(key),key是键名,获取JSONArray对象
          */
         System.out.println(student.getJSONArray("family"));
         System.out.println((JSONArray)student.get("family"));
         //以上两种获取结果相同都是
         //[{"name":"小明老爸","age":40},{"name":"小明老妈","age":41}]

 

三、如何从JSONArray添加元素方法add(value)和调用元素的方法get(i)

 1.add(value)方法

value可以是String对象,JSONArray对象,JSONObject对象

2.get(i)方法

i是元素下标,从0开始

3.getJSONObject(i)方法

获取JSONObject对象元素,i是元素下标,从0开始

3.getJSONArray(i)方法

获取JSONArray对象元素,i是元素下标,从0开始

示例如下

 

         JSONArray pigs = new JSONArray();
         JSONObject pig1 = new JSONObject();
         pig1.put("name", "佩奇");
         JSONObject pig2 = new JSONObject();
         pig2.put("name", "猪猪侠");
         pigs.add("八戒");
         pigs.add(pig1);
         pigs.add(pig2);
         /*
          * 这样构造的JSONArray对象如下
          * ["八戒",{"name":"佩奇"},{"name":"猪猪侠"}]
          */
         System.out.println(pigs.get(0));
         //结果为  八戒
         //因为JSONArray对象pigs的第二个元素类型是JSONObject,所以可以使用getJSONObject(key)方法
         System.out.println(pigs.getJSONObject(1));
         //结果如下
         //{"name":"佩奇"}

补充

1.JavaScript中获取JSONObject对象元素

student = {"name":"小明","sno":"20160000"}

例如获取姓名student.name

2.JavaScript中获取JSONArray对象元素

示例

family = [{"name":"小明老爸","age":40},{"name":"小明老妈","age":41}]

获取第一个元素:{"name":"小明老爸","age":40}

family[0]

JSONObject和JSONArray所需j全部Jar包链接

https://pan.baidu.com/share/init?surl=RPmxNKqmjRjzn9P3NFVKAg

提取码:uhw1

如有疑问,联系作者qq:2210756109

以上是关于JSONObject和JSONArray的区别是啥的主要内容,如果未能解决你的问题,请参考以下文章

JSONObject 和 JSONArray 的区别和用法

JSONObject 和 JSONArray 的区别

JSONObject和JSONArray区别及基本用法

JSONObject和JSONArray解析和构造json字符串

JSONArray与JSONObject

判断json是jsonobject还是jsonarray