Ich habe vor kurzem angefangen, mich mit JSON zu beschäftigen, und ich versuche derzeit, eine Nummer als "Kennung" zu verwenden, was nicht so gut funktioniert. foo:"bar"
funktioniert gut, 0:"bar"
aber nicht.
var Game = {
status: [
{
0:"val",
1:"val",
2:"val"
},
{
0:"val",
1:"val",
2:"val"
}
]
}
alert(Game.status[0].0);
Gibt es eine Möglichkeit, dies folgendermaßen zu tun? So etwas Game.status[0].0
würde mir das Leben leichter machen. Natürlich gibt es andere Möglichkeiten, aber diese Art wird bevorzugt.
Game.status[0]
Array? Dann wäre Ihre SyntaxGame.status[0][0]
.Antworten:
JSON erlaubt nur, dass Schlüsselnamen Zeichenfolgen sind. Diese Zeichenfolgen können aus numerischen Werten bestehen.
Sie verwenden JSON jedoch nicht. Sie haben ein JavaScript-Objektliteral. Sie können Bezeichner für Schlüssel verwenden, aber ein Bezeichner kann nicht mit einer Nummer beginnen. Sie können jedoch weiterhin Zeichenfolgen verwenden.
Wenn Sie mit Punktnotation auf die Eigenschaften zugreifen, müssen Sie Bezeichner verwenden. Verwenden Sie stattdessen die eckige Klammer :
Game.status[0][0]
.Angesichts dieser Daten scheint ein Array jedoch sinnvoller zu sein.
quelle
Game.status[0].0
Game.status[0][0]
.You aren't using JSON though. You have a JavaScript object literal.
ist der einzige Unterschied dervar =
oder gibt es mehr Unterschiede zwischen JSON und einem JS-Objektliteral? Ist ein JS-Objekt im Grunde JSON in einer Variablen gespeichert?Zunächst einmal ist es nicht JSON: JSON schreibt vor, dass alle Schlüssel Zeichenfolgen sein müssen.
Zweitens machen reguläre Arrays, was Sie wollen:
wird funktionieren, wenn Sie verwenden
Game.status[0][0]
. Sie können keine Zahlen mit der Punktnotation (.0
) verwenden.Alternativ können Sie die Zahlen (dh
{ "0": "val" }...
) angeben. Sie haben einfache Objekte anstelle von Arrays, aber die gleiche Syntax funktioniert.quelle
Wahrscheinlich brauchen Sie ein Array?
quelle
Wenn der Name einer Javascript-Objekteigenschaft weder mit einem Unterstrich noch mit einem Buchstaben beginnt, können Sie die Punktnotation (wie
Game.status[0].0
) nicht verwenden, und Sie müssen die alternative Notation verwendenGame.status[0][0]
.Eine andere Anmerkung: Brauchen Sie es wirklich, um ein Objekt innerhalb des Status-Arrays zu sein? Wenn Sie das Objekt wie ein Array verwenden, verwenden Sie stattdessen ein echtes Array.
quelle
JSON regelt den Schlüsseltyp als Zeichenfolge. Der Zweck besteht darin, die Punktnotation für den Zugriff auf die Mitglieder des Objekts zu unterstützen.
Beispiel: Person = {"Größe": 170, "Gewicht": 60, "Alter": 32}. Sie können auf Mitglieder nach person.height, person.weight usw. zugreifen. Wenn JSON Werteschlüssel unterstützt, sieht es wie person.0, person.1, person.2 aus.
quelle
Wie wäre es mit
Funktioniert einer davon?
PS: Was Sie in Ihrer Frage haben, ist ein Javascript-Objekt, kein JSON. JSON ist die 'String'-Version eines Javascript-Objekts.
quelle
JSON ist "JavaScript Object Notation". JavaScript gibt an, dass seine Schlüssel Zeichenfolgen oder Symbole sein müssen.
Das folgende Zitat aus MDN Docs verwendet die Begriffe "Schlüssel / Eigenschaft", um sich auf das zu beziehen, was ich häufiger als "Schlüssel / Wert" höre.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Objects
quelle