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"]}
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".
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/
Respostas:
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á umobject
:[
iniciará umarray
:E
value
é umobject
,array
,string
,number
,bool
ounull
: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:
fonte
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:
então você pode pedir o valor de
"MyStringArray"
e você receberá de volta uma lista de duas strings,"somestring1"
e"somestring2"
.fonte
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/
fonte
Este é um exemplo de uma string JSON com
Employee
como 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.
fonte