Apakah ada cara untuk memiliki objek bersarang di JSON sehingga saya tidak perlu membuat array dari semuanya? Agar objek saya dapat diurai tanpa kesalahan, saya sepertinya membutuhkan struktur seperti ini:
{"data":[{"stuff":[
{"onetype":[
{"id":1,"name":"John Doe"},
{"id":2,"name":"Don Joeh"}
]},
{"othertype":[
{"id":2,"company":"ACME"}
]}]
},{"otherstuff":[
{"thing":
[[1,42],[2,2]]
}]
}]}
Jika saya mengambil objek ini menjadi variabel yang disebut "hasil", saya harus mengakses objek bersarang seperti ini:
result.data[0].stuff[0].onetype[0]
dan
result.data[1].otherstuff[0].thing[0]
Ini tampak kikuk dan berlebihan bagi saya, jika mungkin saya lebih suka:
result.stuff.onetype[0]
dan
result.otherstuff.thing
Tetapi bagaimana saya bisa menggunakan kunci objek secara langsung ketika semuanya adalah array? Bagi pikiran saya yang bingung dan tidak berpendidikan, hal seperti ini tampaknya lebih tepat:
{"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]]
}
}
}
Saya mungkin salah memahami sesuatu yang mendasar di sini, tetapi saya tidak bisa mendapatkan parser jQuery (atau parser FF asli yang digunakan oleh jQuery 1.4) untuk menerima objek gaya kedua. Jika ada yang bisa mencerahkan saya, itu akan sangat dihargai!
{"stuff": ..., "otherstuff": ...}
{"id":2,"name": ""}
. Namun, kurang lebih itu yang dia tanyakan, jadi saya tidak yakin.Jawaban:
Anda tidak perlu menggunakan array.
Nilai JSON dapat berupa array, objek, atau primitif (angka atau string).
Anda dapat menulis JSON seperti ini:
Anda bisa menggunakannya seperti ini:
sumber
Setiap objek harus diberi nama di dalam objek induk:
Jadi Anda tidak dapat mendeklarasikan objek seperti ini:
Itu harus
sumber
Anda memiliki terlalu banyak larik bersarang yang redundan di dalam data jSON Anda, tetapi informasi tersebut dapat diambil kembali. Meskipun seperti orang lain katakan Anda mungkin ingin membersihkannya.
gunakan each () wrap dalam each () hingga array terakhir.
karena
result.data[0].stuff[0].onetype[0]
di jQuery Anda bisa melakukan hal berikut:`
`
sumber