Czy istnieje sposób na zagnieżdżenie obiektów w JSON, aby nie musieć tworzyć tablic ze wszystkiego? Aby mój obiekt mógł zostać przeanalizowany bez błędów, potrzebuję takiej struktury:
{"data":[{"stuff":[
{"onetype":[
{"id":1,"name":"John Doe"},
{"id":2,"name":"Don Joeh"}
]},
{"othertype":[
{"id":2,"company":"ACME"}
]}]
},{"otherstuff":[
{"thing":
[[1,42],[2,2]]
}]
}]}
Jeśli pobieram ten obiekt do zmiennej o nazwie „result”, muszę uzyskać dostęp do zagnieżdżonych obiektów w następujący sposób:
result.data[0].stuff[0].onetype[0]
i
result.data[1].otherstuff[0].thing[0]
Wydaje mi się to niezdarne i zbędne, jeśli to możliwe, wolałbym:
result.stuff.onetype[0]
i
result.otherstuff.thing
Ale jak mogę bezpośrednio używać kluczy obiektów, gdy wszystko jest tablicą? Dla mojego zdezorientowanego i niewykształconego umysłu coś takiego wydawałoby się bardziej odpowiednie:
{"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]]
}
}
}
Prawdopodobnie źle zrozumiałem tutaj coś fundamentalnego, ale nie mogę uzyskać parsera jQuery (ani natywnego parsera FF używanego przez jQuery 1.4) do zaakceptowania drugiego obiektu stylu. Jeśli ktokolwiek może mnie oświecić, będzie to z wdzięcznością!
{"stuff": ..., "otherstuff": ...}
{"id":2,"name": ""}
. Jednak o to mniej więcej pyta, więc nie jestem pewien.Odpowiedzi:
Nie musisz używać tablic.
Wartościami JSON mogą być tablice, obiekty lub prymitywy (liczby lub ciągi znaków).
Możesz napisać JSON w ten sposób:
Możesz go używać w ten sposób:
źródło
Każdy obiekt musi mieć nazwę wewnątrz obiektu nadrzędnego:
Więc nie możesz zadeklarować obiektu takiego jak ten:
To musi być
źródło
Masz zbyt wiele redundantnych zagnieżdżonych tablic w danych jSON, ale możliwe jest pobranie informacji. Chociaż, jak mówili inni, możesz chcieć to posprzątać.
użyj each () zawiń w innym each () aż do ostatniej tablicy.
dla
result.data[0].stuff[0].onetype[0]
w jQuery można wykonać następujące czynności:`
`
źródło