Differenza tra JSONObject e JSONArray


99

Dopo aver dato una breve occhiata a Google ho trovato questo link che descrive la differenza, ma dal punto di vista della sintassi.

Quando uno sarebbe preferito rispetto all'altro in uno scenario di programmazione?

Risposte:


186

Quando lavori con i dati JSON in Android, dovresti usare JSONArrayper analizzare JSON che inizia con le parentesi dell'array. Gli array in JSON vengono utilizzati per organizzare una raccolta di elementi correlati (che potrebbero essere oggetti JSON).
Per esempio:[{"name":"item 1"},{"name": "item2} ]

D'altra parte, JSONObjectuseresti quando hai a che fare con JSON che inizia con le parentesi graffe. Un oggetto JSON viene in genere utilizzato per contenere coppie chiave / valore correlate a un elemento. Per esempio:{"name": "item1", "description":"a JSON object"}

Ovviamente, gli array e gli oggetti JSON possono essere annidati l'uno nell'altro. Un esempio comune di ciò è un'API che restituisce un oggetto JSON contenente alcuni metadati insieme a un array di elementi che corrispondono alla tua query:

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

4
{"startIndex": 0, [{"name": "item 1"}, {"name": "item2"}]} non è né un jsonbject né un jsonArray, l'ho modificato
Sarath Sadasivan Pillai

101

La differenza è la stessa di una mappa (hash) vs elenco.

JSONObject:

  • Contiene valori con nome (coppie chiave-> valore, tuple o come vuoi chiamarli)
    • piace {ID : 1}
  • L'ordine degli elementi non è importante
    • un JSONObject di {id: 1, name: 'B'}è uguale a {name: 'B', id: 1}.

JSONArray:

  • Contiene solo valori di serie
    • piace [1, 'value']
  • L'ordine dei valori è importante
    • array di [1,'value']non è lo stesso di['value',1]

Esempio

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

JSON Array --> [ , , , ]

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

4
questa è la risposta più interessante del gruppo
dinamica

24

Migliore comprensione programmatica.

quando la sintassi è {}allora questo èJsonObject

quando la sintassi è []allora questo èJsonArray

A JSONObjectè un oggetto simile a JSON che può essere rappresentato come un elemento in JSONArray. JSONArraypuò contenere uno (o molti)JSONObject

Spero che questo ti sia d'aiuto!


7

Uso sempre object, è più facilmente estendibile, l'array JSON non lo è. Ad esempio, originariamente avevi alcuni dati come array json, quindi dovevi aggiungere un'intestazione di stato su di esso, saresti rimasto un po 'bloccato, a meno che non avessi annidato i dati in un oggetto. L'unico svantaggio è un leggero aumento della complessità della creazione / analisi.

Quindi invece di

[datum0, datum1, datumN]

Avresti

{data: [datum0, datum1, datumN]}

poi più tardi puoi aggiungere altro ...

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

5

Per capirlo in modo più semplice, di seguito sono riportate le differenze tra oggetto JSON e array JSON:

Collegamento alla differenza tabulare: 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.

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

Sotto # 5 nell'array JSON, questo esempio non dovrebbe essere tra parentesi quadre?
Mike Maxwell

Quell'esempio era solo per spiegare il concetto. Anche se ho cambiato l'esempio per una migliore comprensione. Grazie per aver chiesto a @MikeMaxwell, domande come la tua migliorano le nostre capacità di spiegazione.
SAM

1

Quando un JSON inizia con {} è un oggetto JSON Object e quando inizia con [] è un Array JOSN Array

Un array JSON può essere costituito da uno / molti oggetti e viene chiamato array di oggetti


0

Lo so, tutte le risposte precedenti sono perspicaci per la tua domanda. Anch'io come te ho avuto questa confusione solo un minuto prima di trovare questo thread SO. Dopo aver letto alcune delle risposte, ecco cosa ottengo: Un JSONObject è un oggetto simile a JSON che può essere rappresentato come un elemento nell'array, il JSONArray. In altre parole, un JSONArray può contenere uno (o molti) JSONObject.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.