Difference between JSONObject and JSONArray

在看了 Google 一眼之后,我发现这个 链接描述了这种差异,但是从语法的角度来看。

在编程场景中,什么时候一个人会比另一个人更受欢迎?

179226 次浏览

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

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

当然,JSON 数组和对象可能彼此嵌套在一起。这方面的一个常见例子是一个 API,它返回一个 JSON 对象,其中包含一些元数据以及与查询匹配的项数组:

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

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

所以

[datum0, datum1, datumN]

你会的

{data: [datum0, datum1, datumN]}

然后你可以加上更多..。

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

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

JSONObject:

  • 包含命名值(键-> 值对、元组或任何您想要调用它们的名称)
    • 就像 {ID : 1}
  • 元素的顺序并不重要
    • a JSONObject of {id: 1, name: 'B'} is equal to {name: 'B', id: 1}.

JSONArray:

  • Contains only series values
    • 就像 [1, 'value']
  • 值的顺序很重要
    • [1,'value']的数组不同于 ['value',1]

例子

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


JSON Array --> [ , , , ]


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

最佳编程理解。

当语法是 {}时,这就是 JsonObject

当语法为 []时,这就是 JsonArray

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

希望对你有所帮助!

I know, all of the previous answers are insightful to your question. I had too like you this confusion just one minute before finding this SO thread. After reading some of the answers, here is what I get: JSONObject 是一个类似于 JSON 的对象,可以表示为数组中的一个元素 JSONArray。换句话说,JSONArray 可以包含一个(或多个) JSONObject。

To understand it in a easier way, following are the diffrences between JSON object and JSON array:

链接到表差: 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 Object

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 以 {}开头时,它是一个对象 JSON 对象,而当它以[]开头时,它是一个数组 JSON 数组

JSON 数组可以由许多对象组成,这称为对象数组。

两者的使用都取决于数据的结构。

很简单, 如果你计划优先考虑主键这样的唯一标识符,你可以使用 Nested Objects方法。

例如:

  {
"Employees" : {
"001" : {
"Name" : "Alan",
"Children" : ["Walker", "Dua", "Lipa"]
},
"002" : {
"Name" : "Ezio",
"Children" : ["Kenvey", "Connor", "Edward"]
}
}

Use the Array first approach if you intend to store a set of values with no need to identify uniquely.

例如:

     {
"Employees":[
{
"Name" : "Alan",
"Children" : ["Walker", "Dua", "Lipa"]
},
{
"Name" : "Ezio",
"Children" : ["Kenvey", "Connor", "Edward"]
}
]
}
   

尽管您可以使用带有标识符的第二种方法,但是在某些场景中,查询和理解这种方法可能会比较困难或过于复杂。另外,根据数据库的不同,可能需要采用适当的方法。 例如: MongoDB/< a href = “ https://Firebase.google.com/docs/database/ios/structure- 数据”rel = “ nofollow norefrer”> Firebase

JSON 中的数组用于组织相关项的集合(可能是 JSON 对象)。 例如: [{"name":"Name 1"},{"name": "Name 2} ]

On the other hand, you would use JSONObject when dealing with JSON that begins with curly braces.

A JSON object is typically used to contain key/value pairs related to one item. For example: {"name": "Name", "description":"a JSON object"}

当然,JSON 数组和对象可能彼此嵌套在一起。这方面的一个常见例子是一个 API,它返回一个 JSON 对象,其中包含一些元数据以及与查询匹配的项数组:

{"startIndex": 0, "data": [{"name":"Name 1"},{"name": "Name 2"} ]}