Différence entre JSONObject et JSONArray

99

Après avoir jeté un coup d'œil sur Google, j'ai trouvé ce lien qui décrit la différence, mais d'un point de vue syntaxique.

Quand l'un serait-il préféré à l'autre dans un scénario de programmation?

Luke Taylor
la source

Réponses:

186

Lorsque vous travaillez avec des données JSON sous Android, vous utilisez JSONArraypour analyser JSON qui commence par les crochets du tableau. Les tableaux en JSON sont utilisés pour organiser une collection d'éléments associés (qui peuvent être des objets JSON).
Par exemple:[{"name":"item 1"},{"name": "item2} ]

D'autre part, vous utiliseriez JSONObjectlorsque vous traitez avec JSON qui commence par des accolades. Un objet JSON est généralement utilisé pour contenir des paires clé / valeur liées à un élément. Par exemple:{"name": "item1", "description":"a JSON object"}

Bien entendu, les tableaux et objets JSON peuvent être imbriqués les uns dans les autres. Un exemple courant de ceci est une API qui renvoie un objet JSON contenant des métadonnées à côté d'un tableau des éléments correspondant à votre requête:

{"startIndex": 0, "data": [{"name":"item 1"},{"name": "item2"} ]}
Eric Levine
la source
4
{"startIndex": 0, [{"name": "item 1"}, {"name": "item2"}]} n'est ni un jsonbject ni un jsonArray Je l'ai modifié
Sarath Sadasivan Pillai
101

La différence est la même qu'une (Hash) Map vs List.

JSONObject:

  • Contient des valeurs nommées (paires clé-> valeur, tuples ou ce que vous voulez les appeler)
    • comme {ID : 1}
  • L'ordre des éléments n'est pas important
    • un JSONObject de {id: 1, name: 'B'}est égal à {name: 'B', id: 1}.

JSONArray:

  • Contient uniquement des valeurs de série
    • comme [1, 'value']
  • L'ordre des valeurs est important
    • array of [1,'value']n'est pas le même que['value',1]

Exemple

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

JSON Array --> [ , , , ]

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}
Aleksandr Panzin
la source
4
c'est la réponse la plus intéressante du groupe
dynamique
24

Meilleure compréhension programmatique.

quand la syntaxe est {}alors c'estJsonObject

quand la syntaxe est []alors c'estJsonArray

A JSONObjectest un objet de type JSON qui peut être représenté comme un élément dans le JSONArray. JSONArraypeut contenir un (ou plusieurs)JSONObject

J'espère que cela vous sera utile!

Yogesh Rathi
la source
7

J'utilise toujours un objet, il est plus facilement extensible, le tableau JSON ne l'est pas. Par exemple, vous aviez à l'origine des données sous forme de tableau json, puis vous deviez ajouter un en-tête d'état dessus, vous seriez un peu bloqué, à moins que vous n'ayez imbriqué les données dans un objet. Le seul inconvénient est une légère augmentation de la complexité de la création / analyse.

Donc au lieu de

[datum0, datum1, datumN]

Vous auriez

{data: [datum0, datum1, datumN]}

puis plus tard, vous pouvez en ajouter plus ...

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

Pour le comprendre plus facilement, voici les différences entre l'objet JSON et le tableau JSON:

Lien vers la différence tabulaire: https://i.stack.imgur.com/GIqI9.png

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

Objet 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
la source
Sous le n ° 5 dans le tableau JSON, cet exemple ne devrait-il pas être entre crochets?
Mike Maxwell
Cet exemple était juste pour expliquer le concept. Bien que j'ai changé l'exemple pour une meilleure compréhension. Merci d'avoir posé des questions à @MikeMaxwell, des questions comme la vôtre améliorent nos compétences en explication.
SAM
1

Lorsqu'un JSON commence par {}, il s'agit d'un objet JSON Object et lorsqu'il commence par [], il s'agit d'un Array JOSN Array

Un tableau JSON peut être composé d'un / plusieurs objets et cela s'appelle un tableau d'objets

Ahmed Noman
la source
0

Je sais, toutes les réponses précédentes répondent à votre question. J'ai eu trop comme toi cette confusion juste une minute avant de trouver ce fil SO. Après avoir lu certaines des réponses, voici ce que j'obtiens: Un JSONObject est un objet de type JSON qui peut être représenté comme un élément du tableau, le JSONArray. En d'autres termes, un JSONArray peut contenir un (ou plusieurs) JSONObject.

Serge Kishiko
la source