Różnica między JSONObject i JSONArray

99

Po krótkim spojrzeniu na Google znalazłem ten link który opisuje różnicę, ale z punktu widzenia składni.

Kiedy jeden byłby preferowany nad drugim w scenariuszu programowania?

Luke Taylor
źródło

Odpowiedzi:

186

Podczas pracy z danymi JSON w systemie Android można użyć JSONArraydo przeanalizowania JSON, który zaczyna się od nawiasów tablicy. Tablice w formacie JSON służą do organizowania kolekcji powiązanych elementów (które mogą być obiektami JSON).
Na przykład:[{"name":"item 1"},{"name": "item2} ]

Z drugiej strony użyłbyś JSONObject użyłbyś w przypadku JSON, który zaczyna się od nawiasów klamrowych. Obiekt JSON jest zwykle używany do przechowywania par klucz / wartość związanych z jednym elementem. Na przykład:{"name": "item1", "description":"a JSON object"}

Oczywiście tablice i obiekty JSON mogą być zagnieżdżone jeden w drugim. Jednym z typowych przykładów jest interfejs API, który zwraca obiekt JSON zawierający pewne metadane wraz z tablicą elementów pasujących do zapytania:

{"startIndex": 0, "data": [{"name":"item 1"},{"name": "item2"} ]}
Eric Levine
źródło
4
{"startIndex": 0, [{"name": "item 1"}, {"name": "item2"}]} nie jest ani jsonbject, ani jsonArray. Edytowałem to
Sarath Sadasivan Pillai
101

Różnica jest taka sama, jak w przypadku (Hash) Map vs List.

JSONObject:

  • Zawiera nazwane wartości (pary klucz-> wartość, krotki lub jakkolwiek chcesz je nazwać)
    • lubić {ID : 1}
  • Kolejność elementów nie jest ważna
    • JSONObject z {id: 1, name: 'B'}jest równy {name: 'B', id: 1}.

JSONArray:

  • Zawiera tylko wartości serii
    • lubić [1, 'value']
  • Kolejność wartości jest ważna
    • tablica [1,'value']nie jest tym samym co['value',1]

Przykład

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

JSON Array --> [ , , , ]

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}
Aleksandr Panzin
źródło
4
to najciekawsza odpowiedź z tego grona
dynamiczna
24

Najlepsze zrozumienie programowe.

kiedy składnia jest {}taka, to jestJsonObject

kiedy składnia jest []taka, to jestJsonArray

A JSONObjectto obiekt podobny do JSON, który można przedstawić jako element w JSONArray. JSONArraymoże zawierać (lub wiele)JSONObject

Mam nadzieję, że to Ci pomoże!

Yogesh Rathi
źródło
7

Zawsze używam obiektu, jest łatwiejszy do rozszerzenia, tablica JSON nie. Na przykład pierwotnie miałeś jakieś dane jako tablicę json, a potem musiałeś dodać do niej nagłówek statusu, trochę byś utknął, chyba że zagnieżdżasz dane w obiekcie. Jedyną wadą jest niewielki wzrost złożoności tworzenia / analizowania.

Więc zamiast

[datum0, datum1, datumN]

Miałbyś

{data: [datum0, datum1, datumN]}

później możesz dodać więcej ...

{status: "foo", data: [datum0, datum1, datumN]}
Adam
źródło
5

Aby łatwiej to zrozumieć, poniżej przedstawiono różnice między obiektem JSON a tablicą JSON:

Link do różnicy tabelarycznej: https://i.stack.imgur.com/GIqI9.png

Tablica 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.

Obiekt 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.
SAM
źródło
Czy pod numerem 5 w tablicy JSON ten przykład nie powinien być w nawiasach kwadratowych?
Mike Maxwell
Ten przykład służył tylko wyjaśnieniu koncepcji. Chociaż zmieniłem przykład dla lepszego zrozumienia. Dzięki za zadanie @MikeMaxwell pytania takie jak twoje poprawiają nasze umiejętności wyjaśniania.
SAM
1

Gdy JSON zaczyna się od {}, jest obiektem Object JSON, a kiedy zaczyna się od [], jest to Array JOSN Array

Tablica JSON może składać się z / wielu obiektów i jest nazywana tablicą obiektów

Ahmed Noman
źródło
0

Wiem, wszystkie poprzednie odpowiedzi są wnikliwe na twoje pytanie. Ja też tak jak ty miałem to zamieszanie zaledwie minutę przed znalezieniem tego SO wątku. Po przeczytaniu niektórych odpowiedzi otrzymałem następujące informacje: JSONObject to obiekt podobny do JSON, który można przedstawić jako element tablicy, JSONArray. Innymi słowy, JSONArray może zawierać (lub wiele) JSONObject.

Serge Kishiko
źródło