Existe alguma maneira de ter objetos aninhados em JSON para que eu não precise criar matrizes de tudo? Para que meu objeto seja analisado sem erros, parece que preciso de uma estrutura como esta:
{"data":[{"stuff":[
{"onetype":[
{"id":1,"name":"John Doe"},
{"id":2,"name":"Don Joeh"}
]},
{"othertype":[
{"id":2,"company":"ACME"}
]}]
},{"otherstuff":[
{"thing":
[[1,42],[2,2]]
}]
}]}
Se eu buscar este objeto em uma variável chamada "resultado", tenho que acessar os objetos aninhados assim:
result.data[0].stuff[0].onetype[0]
e
result.data[1].otherstuff[0].thing[0]
Isso me parece desajeitado e redundante, se possível, eu preferiria:
result.stuff.onetype[0]
e
result.otherstuff.thing
Mas como posso usar as chaves de objeto diretamente quando tudo é um array? Para minha mente confusa e sem educação, algo assim pareceria mais apropriado:
{"data":
{"stuff":
{"onetype":[
{"id":1,"name": ""},
{"id":2,"name": ""}
]}
{"othertype":[
{"id":2,"xyz": [-2,0,2],"n":"Crab Nebula","t":0,"c":0,"d":5}
]}
}
{"otherstuff":
{"thing":
[[1,42],[2,2]]
}
}
}
Provavelmente não entendi algo fundamental aqui, mas não consigo fazer com que o analisador jQuery (nem o analisador FF nativo usado por jQuery 1.4) aceite o segundo objeto de estilo. Se alguém puder me esclarecer, agradeceria muito!
{"stuff": ..., "otherstuff": ...}
{"id":2,"name": ""}
. No entanto, é mais ou menos isso que ele está perguntando, então não tenho certeza.Respostas:
Você não precisa usar matrizes.
Os valores JSON podem ser arrays, objetos ou primitivos (números ou strings).
Você pode escrever JSON assim:
Você pode usá-lo assim:
fonte
Cada objeto deve ser nomeado dentro do objeto pai:
Portanto, você não pode declarar um objeto como este:
Tem que ser
fonte
Você tem muitos arrays aninhados redundantes dentro de seus dados jSON, mas é possível recuperar as informações. Embora, como outros disseram, você possa querer limpá-lo.
use each () wrap dentro de outro each () até o último array.
pois
result.data[0].stuff[0].onetype[0]
em jQuery você poderia fazer o seguinte:`
`
fonte