Como você representa uma matriz JSON de seqüências de caracteres?

183

É tudo o que você precisa para JSON válido, certo?

["somestring1", "somestring2"]
finneycanhelp
fonte
6
Essa é uma matriz JSON contendo duas strings, sim ... existe mais nessa pergunta? ;)
Cidade
Eu li algo que contradiz o que todos estamos concordando. Então, eu queria ver a realidade lá. Obrigado!
finneycanhelp
4
Ah entendi! É uma pena que você não possa aceitar sua própria pergunta como resposta: D
Town
:) Bem, não são apenas as respostas que são divertidas. São ótimas pessoas como você que ajudam a tornar este site um sucesso divertido!
finneycanhelp

Respostas:

297

Vou elaborar um pouco mais sobre a incrível resposta do ChrisR e trazer imagens de sua incrível referência .

Um JSON válido sempre começa com chaves {ou colchetes [, nada mais.

{iniciará um object:

colchete esquerdo seguido por uma string de chave (um nome que não pode ser repetido entre aspas), dois pontos e um valor (tipos válidos mostrados abaixo), seguido por uma vírgula opcional para adicionar mais pares de string e valor à vontade e finalizado com uma chave direita

{ "key": value, "another key": value }

Dica : embora o javascript aceite aspas simples ', o JSON usa apenas aspas duplas ".

[iniciará um array:

colchete esquerdo seguido de valor, vírgula opcional para adicionar mais valor à vontade e finalizado com colchete direito

[value, value]

Dica : os espaços entre os elementos são sempre ignorados por qualquer analisador JSON.

E valueé um object, array, string, number, boolou null:

Imagem mostrando os 6 tipos em que um valor JSON pode ser: string, número, objeto JSON, Matriz / lista, booleano e nulo

Então, sim, ["a", "b"]é um JSON perfeitamente válido, como você pode tentar no link que Manish apontou .

Aqui estão alguns exemplos JSON extras válidos, um por bloco:

{}

[0]

{"__comment": "json doesn't accept comments and you should not be commenting even in this way", "avoid!": "also, never add more than one key per line, like this"}

[{   "why":null} ]

{
  "not true": [0, false],
  "true": true,
  "not null": [0, 1, false, true, {
    "obj": null
  }, "a string"]
}
cregox
fonte
22
Representação de UI tão impressionante
shridutt kothari
O JSON precisa ter aspas duplas? Tentei validar a string do OP acima, mas com aspas simples no jsonlint.com e ele me diz que é inválido. Mas é válido ao usar aspas duplas.
Raio
@ Ray, como de costume, que não tem uma resposta sim ou não simples, embora eu diria que é principalmente "sim, basta ir com aspas duplas". O json.org nos diz apenas sobre o uso de aspas duplas, e a maioria dos lugares provavelmente seguirá isso. No entanto, aqui está uma investigação mais profunda sobre o assunto: stackoverflow.com/a/2275428/274502
cregox
61

Seu objeto JSON neste caso é uma lista. JSON é quase sempre um objeto com atributos; um conjunto de uma ou mais pares chave: valor, então você provavelmente verá um dicionário:

{ "MyStringArray" : ["somestring1", "somestring2"] }

então você pode pedir o valor de "MyStringArray"e você receberá de volta uma lista de duas strings, "somestring1"e "somestring2".

PapaSmurf
fonte
12
O exemplo de código que você postou é inválido. Quando você tenta analisar essa string como um json, isso gera um erro / exceção. O fato de você dizer que o JSON é sempre pares de chave / valor também é inerentemente errado. Nada na especificação JSON diz que você PRECISA ter pares de chave / valor. Ao falar sobre o transporte de dados, na verdade pares de chave / valor são a estrutura mais útil, mas a corda do OP postada é perfeitamente JSON válido: codebeautify.org/jsonviewer/92ac7b
ChrisR
1
Eu tinha APIs no cérebro, onde você deseja procurar o valor em uma matriz com base em uma chave. Portanto, seria, por uma matriz chamada-un, { "1": "somestring1", "2": "somestring2"}
PapaSmurf
41

Basicamente, sim, JSON é apenas uma representação literal em javascript do seu valor, portanto, o que você disse está correto.

Você pode encontrar uma explicação bastante clara e boa da notação JSON em http://json.org/

ChrisR
fonte
5
String strJson="{\"Employee\":
[{\"id\":\"101\",\"name\":\"Pushkar\",\"salary\":\"5000\"},
{\"id\":\"102\",\"name\":\"Rahul\",\"salary\":\"4000\"},
{\"id\":\"103\",\"name\":\"tanveer\",\"salary\":\"56678\"}]}";

Este é um exemplo de uma string JSON com Employeecomo objeto e, em seguida, várias strings e valores em uma matriz como uma referência para @cregox...

Um pouco complicado, mas pode explicar muito em uma única string JSON.

Pushkar Shrivastava
fonte