¿Hay alguna forma de tener objetos anidados en JSON para no tener que hacer arreglos con todo? Para que mi objeto sea analizado sin errores, parece que necesito una estructura 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]]
}]
}]}
Si busco este objeto en una variable llamada "resultado", tengo que acceder a los objetos anidados como este:
result.data[0].stuff[0].onetype[0]
y
result.data[1].otherstuff[0].thing[0]
Esto me parece torpe y redundante, si es posible preferiría:
result.stuff.onetype[0]
y
result.otherstuff.thing
Pero, ¿cómo puedo usar las claves de objeto directamente cuando todo es una matriz? Para mi mente confundida y sin educación, algo como esto parecería más apropiado:
{"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]]
}
}
}
Probablemente he entendido mal algo fundamental aquí, pero no puedo obtener el analizador jQuery (ni el analizador FF nativo utilizado por jQuery 1.4) para aceptar el segundo objeto de estilo. ¡Si alguien puede iluminarme, se lo agradecería!
{"stuff": ..., "otherstuff": ...}
{"id":2,"name": ""}
. Sin embargo, eso es más o menos lo que pregunta, así que no estoy seguro.Respuestas:
No es necesario utilizar matrices.
Los valores JSON pueden ser matrices, objetos o primitivas (números o cadenas).
Puedes escribir JSON así:
Puedes usarlo así:
fuente
Cada objeto tiene que ser nombrado dentro del objeto padre:
Entonces no puedes declarar un objeto como este:
Tiene que ser
fuente
Tiene demasiadas matrices anidadas redundantes dentro de sus datos jSON, pero es posible recuperar la información. Aunque, como otros han dicho, es posible que desee limpiarlo.
use cada ajuste () dentro de otro each () hasta la última matriz.
por
result.data[0].stuff[0].onetype[0]
en jQuery puedes hacer lo siguiente:'
'
fuente