Gibt es eine Möglichkeit, verschachtelte Objekte in JSON zu haben, damit ich nicht aus allem Arrays erstellen muss? Damit mein Objekt fehlerfrei analysiert werden kann, brauche ich eine Struktur wie diese:
{"data":[{"stuff":[
{"onetype":[
{"id":1,"name":"John Doe"},
{"id":2,"name":"Don Joeh"}
]},
{"othertype":[
{"id":2,"company":"ACME"}
]}]
},{"otherstuff":[
{"thing":
[[1,42],[2,2]]
}]
}]}
Wenn ich dieses Objekt in eine Variable namens "result" bringe, muss ich wie folgt auf die verschachtelten Objekte zugreifen:
result.data[0].stuff[0].onetype[0]
und
result.data[1].otherstuff[0].thing[0]
Dies erscheint mir ungeschickt und überflüssig, wenn möglich würde ich es vorziehen:
result.stuff.onetype[0]
und
result.otherstuff.thing
Aber wie kann ich die Objektschlüssel direkt verwenden, wenn alles ein Array ist? Für meinen verwirrten und ungebildeten Verstand scheint so etwas angemessener zu sein:
{"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]]
}
}
}
Ich habe hier wahrscheinlich etwas Grundlegendes falsch verstanden, aber ich kann weder den jQuery-Parser (noch den von jQuery 1.4 verwendeten nativen FF-Parser) dazu bringen, das Objekt im zweiten Stil zu akzeptieren. Wenn mich jemand aufklären kann, wäre ich dankbar!
{"stuff": ..., "otherstuff": ...}
{"id":2,"name": ""}
. Das ist jedoch mehr oder weniger das, was er verlangt, also bin ich mir nicht sicher.Antworten:
Sie müssen keine Arrays verwenden.
JSON-Werte können Arrays, Objekte oder Grundelemente (Zahlen oder Zeichenfolgen) sein.
Sie können JSON folgendermaßen schreiben:
Sie können es so verwenden:
quelle
Jedes Objekt muss innerhalb des übergeordneten Objekts benannt werden:
Sie können ein Objekt wie folgt also nicht deklarieren:
Es muss sein
quelle
Sie haben zu viele redundante verschachtelte Arrays in Ihren jSON-Daten, aber es ist möglich, die Informationen abzurufen. Obwohl, wie andere gesagt haben, möchten Sie es vielleicht aufräumen.
Verwenden Sie jeden () Wrap innerhalb eines anderen () bis zum letzten Array.
für
result.data[0].stuff[0].onetype[0]
in jQuery können Sie Folgendes tun:`
`
quelle