Diferença entre JSONObject e JSONArray

99

Depois de dar uma olhada rápida no Google, encontrei este link que descreve a diferença, ainda do ponto de vista da sintaxe.

Quando um seria preferido em relação ao outro em um cenário de programação?

Luke Taylor
fonte

Respostas:

186

Ao trabalhar com dados JSON no Android, você usaria JSONArraypara analisar JSON, que começa com os colchetes da matriz. Arrays em JSON são usados ​​para organizar uma coleção de itens relacionados (que podem ser objetos JSON).
Por exemplo:[{"name":"item 1"},{"name": "item2} ]

Por outro lado, você usaria JSONObjectao lidar com JSON que começa com chaves. Um objeto JSON é normalmente usado para conter pares de chave / valor relacionados a um item. Por exemplo:{"name": "item1", "description":"a JSON object"}

Obviamente, os arrays e objetos JSON podem ser aninhados uns dentro dos outros. Um exemplo comum disso é uma API que retorna um objeto JSON contendo alguns metadados ao lado de uma matriz dos itens que correspondem à sua consulta:

{"startIndex": 0, "data": [{"name":"item 1"},{"name": "item2"} ]}
Eric Levine
fonte
4
{"startIndex": 0, [{"name": "item 1"}, {"name": "item2"}]} não é um jsonbject nem um jsonArray eu editei
Sarath Sadasivan Pillai
101

A diferença é a mesma que um mapa (hash) versus lista.

JSONObject:

  • Contém valores nomeados (pares chave-> valor, tuplas ou o que você quiser chamá-los)
    • gostar {ID : 1}
  • A ordem dos elementos não é importante
    • um JSONObject de {id: 1, name: 'B'}é igual a {name: 'B', id: 1}.

JSONArray:

  • Contém apenas valores de série
    • gostar [1, 'value']
  • A ordem dos valores é importante
    • array de [1,'value']não é o mesmo que['value',1]

Exemplo

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

JSON Array --> [ , , , ]

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}
Aleksandr Panzin
fonte
4
esta é a resposta mais interessante do grupo
dinâmica de
24

Melhor compreensão programática.

quando a sintaxe é, {}então isso éJsonObject

quando a sintaxe é, []então isso éJsonArray

A JSONObjecté um objeto semelhante a JSON que pode ser representado como um elemento no JSONArray. JSONArraypode conter um (ou muitos)JSONObject

Espero que isso seja útil para você!

Yogesh Rathi
fonte
7

Eu sempre uso objeto, é mais facilmente extensível, array JSON não é. Por exemplo, você originalmente tinha alguns dados como um array json, então você precisava adicionar um cabeçalho de status nele, você ficaria um pouco preso, a menos que tivesse aninhado os dados em um objeto. A única desvantagem é um ligeiro aumento na complexidade de criação / análise.

Então, em vez de

[datum0, datum1, datumN]

Você teria

{data: [datum0, datum1, datumN]}

então mais tarde você pode adicionar mais ...

{status: "foo", data: [datum0, datum1, datumN]}
Adão
fonte
5

Para entender de forma mais fácil, a seguir estão as diferenças entre o objeto JSON e a matriz JSON:

Link para a diferença tabular: 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.

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
fonte
Em # 5 na matriz JSON, esse exemplo não deveria estar entre colchetes?
Mike Maxwell,
Esse exemplo foi apenas para explicar o conceito. Embora eu tenha mudado o exemplo para melhor compreensão. Obrigado por perguntar a @MikeMaxwell, perguntas como a sua melhora nossas habilidades de explicação.
SAM
1

Quando um JSON começa com {} é um objeto JSON Object e quando começa com [] é um Array JOSN Array

Uma matriz JSON pode consistir em um / muitos objetos e isso é chamado de matriz de objetos

Ahmed Noman
fonte
0

Eu sei, todas as respostas anteriores são esclarecedoras para sua pergunta. Eu também gostei de você esta confusão apenas um minuto antes de encontrar este tópico SO. Depois de ler algumas das respostas, aqui está o que eu obtenho: Um JSONObject é um objeto semelhante a JSON que pode ser representado como um elemento no array, o JSONArray. Em outras palavras, um JSONArray pode conter um (ou vários) JSONObject.

Serge Kishiko
fonte