Різниця між JSONObject і JSONArray


99

Переглянувши Google, я знайшов це посилання яке описує різницю, але з точки зору синтаксису.

Коли в сценарії програмування один віддати перевагу іншому?

Відповіді:


186

Коли ви працюєте з даними 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, який я відредагував
Sarath Sadasivan Pillai

101

Різниця така ж, як (Hash) Map vs List.

JSONObject:

  • Містить названі значення (пари ключів, пари значень, кортежі або все, що ви хочете їх називати)
    • подібно до {ID : 1}
  • Порядок елементів не важливий
    • a JSONObject of {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, такі питання, як ваш, покращують наші навички пояснення.
САМ

1

Коли JSON починається з {}, це об'єкт JSON Object, а коли він починається з [], це масив JOSN Array

Масив JSON може складатися з / багатьох об'єктів і називається масивом об'єктів


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.