JSONObject和JSONArray之间的区别


99

在对Google进行了简短浏览之后,我发现此链接从语法的角度描述了差异。

在编程情况下,何时会比另一个更受欢迎?

Answers:


186

在Android中使用JSON数据时,您将使用JSONArray解析以数组括号开头的JSON。JSON中的数组用于组织相关项的集合(可能是JSON对象)。
例如:[{"name":"item 1"},{"name": "item2} ]

另一方面,JSONObject在处理以花括号开头的JSON时,您会使用。JSON对象通常用于包含与一项相关的键/值对。例如:{"name": "item1", "description":"a JSON object"}

当然,JSON数组和对象可以相互嵌套。一个常见的示例是一个API,该API返回一个JSON对象,该对象包含一些元数据以及与您的查询匹配的项目数组:

{"startIndex": 0, "data": [{"name":"item 1"},{"name": "item2"} ]}

4
{“ startIndex”:0,[{“ name”:“ item 1”},{“ name”:“ item2”}]}}既不是jsonbject也不是我编辑过的jsonArray
Sarath Sadasivan Pillai

101

区别与(Hash)Map vs List相同。

JSONObject:

  • 包含命名值(键->值对,元组或任何您想调用的值)
    • 喜欢 {ID : 1}
  • 元素的顺序并不重要
    • 的JSONObject {id: 1, name: 'B'}等于{name: 'B', id: 1}

JSONArray:

  • 仅包含序列值
    • 喜欢 [1, 'value']
  • 值的顺序很重要
    • 的数组[1,'value']['value',1]

JSON Object --> { "":""}

JSON Array --> [ , , , ]

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}

4
这是最有趣的答案
动态的

24

最好以编程方式理解。

当语法是{}那么JsonObject

当语法是[]那么JsonArray

A JSONObject是一个类似于JSON的对象,可以表示为中的元素JSONArrayJSONArray可以包含一个(或多个)JSONObject

希望这对您有所帮助!


7

我总是使用对象,它更容易扩展,而不是JSON数组。例如,您最初有一些数据作为json数组,然后需要在其上添加一个状态标头,否则会有点卡住,除非您将数据嵌套在一个对象中。唯一的缺点是创建/解析的复杂性略有增加。

所以代替

[datum0, datum1, datumN]

你会有

{data: [datum0, datum1, datumN]}

然后稍后您可以添加更多...

{status: "foo", data: [datum0, datum1, datumN]}

5

为了更轻松地理解它,以下是JSON对象和JSON数组之间的区别:

链接到表格差异:https : //i.stack.imgur.com/GIqI9.png

JSON数组

1. Arrays in JSON are used to organize a collection of related items
   (Which could be JSON objects)
2.  Array values must be of type string, number, object, array, boolean or null
3.  Syntax: 
           [ "Ford", "BMW", "Fiat" ]
4.  JSON arrays are surrounded by square brackets []. 
    **Tip to remember**  :  Here, order of element is important. That means you have 
    to go straight like the shape of the bracket i.e. straight lines. 
   (Note :It is just my logic to remember the shape of both.) 
5.  Order of elements is important. Example:  ["Ford","BMW","Fiat"] is not 
    equal to ["Fiat","BMW","Ford"]
6.  JSON can store nested Arrays that are passed as a value.

JSON对象

1.  JSON objects are written in key/value pairs.
2.  Keys must be strings, and values must be a valid JSON data type (string, number, 
    object, array, boolean or null).Keys and values are separated by a colon.
    Each key/value pair is separated by a comma.
3.  Syntax:
         { "name":"Somya", "age":25, "car":null }
4.  JSON objects are surrounded by curly braces {} 
    Tip to remember : Here, order of element is not important. That means you can go 
    the way you like. Therefore the shape of the braces i.e. wavy. 
    (Note : It is just my logic to remember the shape of both.)
5.  Order of elements is not important. 
    Example:  { rollno: 1, firstname: 'Somya'} 
                   is equal to 
             { firstname: 'Somya', rollno: 1}
6.  JSON can store nested objects in JSON format in addition to nested arrays.

在JSON数组的#5下,该示例不应该放在方括号中吗?
Mike Maxwell

这个例子只是为了解释这个概念。尽管我更改了示例以更好地理解。感谢您询问@MikeMaxwell,像您这样的问题将改善我们的解释能力。
SAM


0

我知道,以前的所有答案对您的问题都有深刻的见解。在找到该SO线程之前一分钟,我也非常喜欢您这种困惑。在阅读了一些答案之后,我得到的是:JSONObject是类似于JSON的对象,可以表示为数组JSONArray中的元素。换句话说,JSONArray可以包含一个(或多个)JSONObject。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.