Unterschied zwischen JSONObject und JSONArray

99

Nach einem kurzen Blick auf Google habe ich diesen Link gefunden , der den Unterschied beschreibt, jedoch aus syntaktischer Sicht.

Wann würde in einem Programmierszenario eines dem anderen vorgezogen?

Luke Taylor
quelle

Antworten:

185

Wenn Sie mit JSON-Daten in Android arbeiten, würden Sie JSONArrayJSON analysieren, das mit den Array-Klammern beginnt. Arrays in JSON werden verwendet, um eine Sammlung verwandter Elemente zu organisieren (dies können JSON-Objekte sein).
Beispielsweise:[{"name":"item 1"},{"name": "item2} ]

Auf der anderen Seite würden Sie verwenden, JSONObjectwenn Sie mit JSON arbeiten, das mit geschweiften Klammern beginnt. Ein JSON-Objekt wird normalerweise verwendet, um Schlüssel / Wert-Paare zu enthalten, die sich auf ein Element beziehen. Beispielsweise:{"name": "item1", "description":"a JSON object"}

Natürlich können JSON-Arrays und -Objekte ineinander verschachtelt sein. Ein häufiges Beispiel hierfür ist eine API, die ein JSON-Objekt zurückgibt, das einige Metadaten neben einem Array der Elemente enthält, die Ihrer Abfrage entsprechen:

{"startIndex": 0, "data": [{"name":"item 1"},{"name": "item2"} ]}
Eric Levine
quelle
4
{"startIndex": 0, [{"name": "item 1"}, {"name": "item2"}]} ist weder ein jsonbject noch ein jsonArray, das ich bearbeitet habe
Sarath Sadasivan Pillai
100

Der Unterschied ist der gleiche wie bei einer (Hash) Map vs List.

JSONObject:

  • Enthält benannte Werte (Schlüssel-> Wertepaare, Tupel oder wie auch immer Sie sie nennen möchten)
    • mögen {ID : 1}
  • Die Reihenfolge der Elemente ist nicht wichtig
    • ein JSONObject von {id: 1, name: 'B'}ist gleich {name: 'B', id: 1}.

JSONArray:

  • Enthält nur Serienwerte
    • mögen [1, 'value']
  • Die Reihenfolge der Werte ist wichtig
    • Array von [1,'value']ist nicht dasselbe wie['value',1]

Beispiel

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

JSON Array --> [ , , , ]

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}
Aleksandr Panzin
quelle
4
Dies ist die interessanteste Antwort der Gruppe
dynamisch
24

Am besten programmgesteuert verstehen.

Wenn die Syntax {}dann ist, ist diesJsonObject

Wenn die Syntax []dann ist, ist diesJsonArray

A JSONObjectist ein JSON-ähnliches Objekt, das als Element in der dargestellt werden kann JSONArray. JSONArraykann ein (oder viele) enthaltenJSONObject

Hoffe das wird dir helfen!

Yogesh Rathi
quelle
7

Ich benutze immer Objekt, es ist leichter erweiterbar, JSON-Array nicht. Zum Beispiel hatten Sie ursprünglich einige Daten als JSON-Array, dann mussten Sie einen Status-Header hinzufügen. Sie würden ein bisschen stecken bleiben, es sei denn, Sie hätten die Daten in einem Objekt verschachtelt. Der einzige Nachteil ist eine leichte Zunahme der Komplexität der Erstellung / Analyse.

Also statt

[datum0, datum1, datumN]

Das hättest du

{data: [datum0, datum1, datumN]}

dann später können Sie weitere hinzufügen ...

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

Um es einfacher zu verstehen, folgen die folgenden Unterschiede zwischen dem JSON-Objekt und dem JSON-Array:

Link zum tabellarischen Unterschied: https://i.stack.imgur.com/GIqI9.png

JSON-Array

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-Objekt

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
quelle
Sollte dieses Beispiel unter # 5 im JSON-Array nicht in eckigen Klammern stehen?
Mike Maxwell
Dieses Beispiel diente nur zur Erläuterung des Konzepts. Obwohl ich das Beispiel zum besseren Verständnis geändert habe. Vielen Dank, dass Sie @MikeMaxwell gefragt haben. Fragen wie Ihre verbessern unsere Erklärungsfähigkeiten.
SAM
1

Wenn ein JSON mit {} beginnt, ist es ein Objekt- JSON-Objekt und wenn es mit [] beginnt, ist es ein Array- JOSN-Array

Ein JSON-Array kann aus mehreren Objekten bestehen und wird als Array von Objekten bezeichnet

Ahmed Noman
quelle
0

Ich weiß, alle vorherigen Antworten sind aufschlussreich für Ihre Frage. Ich hatte diese Verwirrung auch nur eine Minute bevor ich diesen SO Thread gefunden habe. Nachdem ich einige der Antworten gelesen habe, erhalte ich Folgendes : Ein JSONObject ist ein JSON-ähnliches Objekt, das als Element im Array, dem JSONArray, dargestellt werden kann. Mit anderen Worten, ein JSONArray kann ein (oder mehrere) JSONObject enthalten.

Serge Kishiko
quelle