Diferencia entre JSONObject y JSONArray

99

Después de echar un vistazo a Google, encontré este enlace que describe la diferencia, pero desde el punto de vista de la sintaxis.

¿Cuándo se preferiría uno sobre el otro en un escenario de programación?

Luke Taylor
fuente

Respuestas:

186

Cuando esté trabajando con datos JSON en Android, usaría JSONArraypara analizar JSON que comienza con los corchetes de la matriz. Las matrices en JSON se utilizan para organizar una colección de elementos relacionados (que podrían ser objetos JSON).
Por ejemplo:[{"name":"item 1"},{"name": "item2} ]

Por otro lado, lo usaría JSONObjectcuando se trata de JSON que comienza con llaves. Un objeto JSON generalmente se usa para contener pares clave / valor relacionados con un elemento. Por ejemplo:{"name": "item1", "description":"a JSON object"}

Por supuesto, las matrices JSON y los objetos pueden estar anidados unos dentro de otros. Un ejemplo común de esto es una API que devuelve un objeto JSON que contiene algunos metadatos junto con una matriz de los elementos que coinciden con su consulta:

{"startIndex": 0, "data": [{"name":"item 1"},{"name": "item2"} ]}
Eric Levine
fuente
4
{"startIndex": 0, [{"name": "item 1"}, {"name": "item2"}]} no es un jsonbject ni un jsonArray lo he editado
Sarath Sadasivan Pillai
101

La diferencia es la misma que la de un mapa (hash) frente a una lista.

JSONObject:

  • Contiene valores con nombre (pares clave-> valor, tuplas o como quieras llamarlos)
    • me gusta {ID : 1}
  • El orden de los elementos no es importante
    • un JSONObject de {id: 1, name: 'B'}es igual a {name: 'B', id: 1}.

JSONArray:

  • Contiene solo valores de serie
    • me gusta [1, 'value']
  • El orden de los valores es importante
    • matriz de [1,'value']no es lo mismo que['value',1]

Ejemplo

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

JSON Array --> [ , , , ]

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}
Aleksandr Panzin
fuente
4
esta es la respuesta más interesante del grupo
dinámica
24

Mejor comprensión programática.

cuando la sintaxis es {}entonces esto esJsonObject

cuando la sintaxis es []entonces esto esJsonArray

A JSONObjectes un objeto similar a JSON que se puede representar como un elemento en JSONArray. JSONArraypuede contener una (o muchas)JSONObject

¡Espero que esto te sea útil!

Yogesh Rathi
fuente
7

Siempre uso object, es más fácil de ampliar, la matriz JSON no lo es. Por ejemplo, originalmente tenía algunos datos como una matriz json, luego necesitaba agregar un encabezado de estado en el que estaría un poco atascado, a menos que haya anidado los datos en un objeto. La única desventaja es un ligero aumento en la complejidad de la creación / análisis.

Entonces en lugar de

[datum0, datum1, datumN]

Tendrías

{data: [datum0, datum1, datumN]}

luego más tarde puedes agregar más ...

{status: "foo", data: [datum0, datum1, datumN]}
Adán
fuente
5

Para entenderlo de una manera más fácil, las siguientes son las diferencias entre el objeto JSON y la matriz JSON:

Enlace a la diferencia tabular: https://i.stack.imgur.com/GIqI9.png

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

Objeto 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
fuente
Debajo del n. ° 5 en la matriz JSON, ¿no debería ese ejemplo estar entre corchetes?
Mike Maxwell
Ese ejemplo fue solo para explicar el concepto. Aunque he cambiado el ejemplo para una mejor comprensión. Gracias por preguntar a @MikeMaxwell, preguntas como la suya mejoran nuestras habilidades de explicación.
SAM
1

Cuando un JSON comienza con {} es un objeto Object JSON y cuando comienza con [] es un Array JOSN Array

Una matriz JSON puede constar de / muchos objetos y eso se denomina matriz de objetos

Ahmed Noman
fuente
0

Lo sé, todas las respuestas anteriores son útiles para tu pregunta. También tuve como tú esta confusión solo un minuto antes de encontrar este hilo SO. Después de leer algunas de las respuestas, esto es lo que obtengo: Un JSONObject es un objeto similar a JSON que se puede representar como un elemento en la matriz, JSONArray. En otras palabras, un JSONArray puede contener un JSONObject (o muchos).

Serge Kishiko
fuente