it-swarm.com.de

Müssen die JSON-Schlüssel in Anführungszeichen gesetzt werden?

Beispiel: Ist der folgende Code gültig für JSON Spec ?

{
    precision: "Zip"
}

Oder sollte ich immer die folgende Syntax verwenden? (Und wenn ja, warum?)

{
    "precision": "Zip"
}

Ich habe dazu in den JSON-Spezifikationen nicht wirklich etwas gefunden. Obwohl sie in ihren Beispielen Anführungszeichen um ihre Schlüssel verwenden.

212

Ja, Sie benötigen Anführungszeichen. Dies dient der Vereinfachung und der Vermeidung einer weiteren Escape-Methode für mit JavaScript reservierte Schlüsselwörter, z. B. {for:"foo"}.

131
cobbal

Sie haben Recht, Zeichenfolgen als Schlüssel zu verwenden. Hier ist ein Auszug aus RFC 4627 - Die Anwendung/json Medientyp für JavaScript-Objektnotation (JSON)

2.2. Objekte

Eine Objektstruktur wird als ein Paar geschweifter Klammern dargestellt, die null oder mehr Name/Wert-Paare (oder Elemente) umgeben. Ein Name ist eine Zeichenfolge . Nach jedem Namen kommt ein einzelner Doppelpunkt, der den Namen vom Wert trennt. Ein einzelnes Komma trennt einen Wert von einem folgenden Namen. Die Namen innerhalb eines Objekts sollten eindeutig sein.

object = begin-object [ member *( value-separator member ) ] end-object

member = string name-separator value

[...]

2.5. Streicher

Die Darstellung von Zeichenfolgen ähnelt den in der C-Programmiersprachenfamilie verwendeten Konventionen. Eine Zeichenfolge beginnt und endet mit Anführungszeichen. [...]

string = quotation-mark *char quotation-mark

quotation-mark = %x22 ; "

Lesen Sie den gesamten RFC hier .

130

Von 2.2. Objekte

Eine Objektstruktur wird als ein Paar geschweifter Klammern dargestellt, die null oder mehr Name/Wert-Paare (oder Elemente) umgeben. Ein Name ist eine Zeichenfolge.

und von 2.5. Strings

Eine Zeichenfolge beginnt und endet mit Anführungszeichen.

Also würde ich sagen, dass nach dem Standard: Ja, Sie sollten immer den Schlüssel zitieren (obwohl einige Parser verzeihender sein können)

12
Cebjyre

Ja, Anführungszeichen sind obligatorisch. http://json.org/ sagt:

string
    ""
    " chars "
6
lutz