Разница между JSONObject и JSONArray

99

Бегло взглянув на Google, я нашел ссылку, которая описывает разницу, но с точки зрения синтаксиса.

Когда в сценарии программирования одно предпочтительнее другого?

Люк Тейлор
источник

Ответы:

187

Когда вы работаете с данными JSON в Android, вы должны использовать JSONArrayдля синтаксического анализа JSON, который начинается с скобок массива. Массивы в JSON используются для организации коллекции связанных элементов (которые могут быть объектами JSON).
Например:[{"name":"item 1"},{"name": "item2} ]

С другой стороны, вы можете использовать его JSONObjectпри работе с JSON, который начинается с фигурных скобок. Объект JSON обычно используется для хранения пар ключ / значение, связанных с одним элементом. Например:{"name": "item1", "description":"a JSON object"}

Конечно, массивы и объекты JSON могут быть вложены друг в друга. Одним из распространенных примеров этого является API, который возвращает объект JSON, содержащий некоторые метаданные, вместе с массивом элементов, соответствующих вашему запросу:

{"startIndex": 0, "data": [{"name":"item 1"},{"name": "item2"} ]}
Эрик Левин
источник
4
{"startIndex": 0, [{"name": "item 1"}, {"name": "item2"}]} не является ни jsonbject, ни jsonArray, я его редактировал
Сарат Садасиван Пиллай
102

Разница такая же, как у (хеш-карты) карты и списка.

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, который может быть представлен как элемент в JSONArray. JSONArrayможет содержать (или несколько)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.
СЭМ
источник
Разве этот пример под номером 5 в массиве JSON не должен быть в квадратных скобках?
Майк Максвелл
Этот пример был просто для объяснения концепции. Хотя я изменил пример для лучшего понимания. Спасибо за вопрос @MikeMaxwell, такие вопросы, как ваш, улучшают наши навыки объяснения.
SAM
1

Когда JSON начинается с {}, это объект Object JSON, а когда он начинается с [], это массив JOSN Array

Массив JSON может состоять из нескольких объектов и называется массивом объектов.

Ахмед Номан
источник
0

Я знаю, что все предыдущие ответы на ваш вопрос проницательны. Мне тоже понравилась эта путаница всего за одну минуту до того, как я нашел эту тему SO. Прочитав некоторые ответы, я получил следующее: JSONObject - это объект, подобный JSON, который может быть представлен как элемент в массиве JSONArray. Другими словами, JSONArray может содержать (или несколько) JSONObject.

Серж Кишико
источник