/ / Was ist der Unterschied zwischen {active: "yes"} und {"active": "yes"}? - javascript, json

Was ist der Unterschied zwischen {active: "yes"} und {"active": "yes"}? - Javascript, json

Ich habe FireBug verwendet, um die beiden Fälle zu testen, und sie scheinen sich vom Ergebnis her ziemlich ähnlich zu sein:

>>> var x = {"active": "yes"}
>>> x.active
"yes"
>>> var x = {active: "yes"}
>>> x.active
"yes"

Aber ich bin mir ziemlich sicher, dass es einen Unterschied gibtzwischen diesen beiden, vielleicht sogar leistungsbedingten Unterschied. Fazit - Ich würde gerne wissen, ob es einen Unterschied zwischen {active: "yes"} und {"active": "yes"} gibt.

Antworten:

28 für die Antwort № 1

Beides ist gültig. Es gibt jedoch bestimmte Schlüsselwörter, die Sie nicht mögen delete Um zu vermeiden, dass Sie sie in Anführungszeichen setzen, werden sie vom ECMAScript-Parser nicht wörtlich behandelt, sondern explizit als Zeichenfolgen angegeben.

Zusätzlich, die JSON-Spezifikation setzt voraus, dass Schlüssel in Anführungszeichen stehen:

Eine Zeichenfolge beginnt und endet mit
Anführungszeichen

Damit {key:"value"} ist kein gültiger JSON-Code, aber ein gültiger JS-Code {"key":"value"} ist gültig für JS und JSON.

Beispiele für Schlüsselwörter und ungültige / mehrdeutige Schlüssel:

>>> ({delete:1})
SyntaxError: Unexpected token delete
>>> ({"delete":1})
Object

Ein anderes Beispiel:

>>> ({first-name:"john"})
SyntaxError: Unexpected token -
>>> ({"first-name":"john"})
Object
>>> ({"first-name":"john"})["first-name"]
"john"

11 für die Antwort № 2

Beide sind gültiges JavaScript (obwohl einige Namen nur in Anführungszeichen verwendet werden können, active ist nicht unter ihnen).

Letzteres ist ungültiger JSON (in JSON sind die angegebenen Namen obligatorisch).


3 für die Antwort № 3

Jeder gültige JSON-Code ist auch ein gültiges JavaScript, aber nicht jeder gültige JavaScript-Code ist auch ein gültiger JSON-Code, da JSON eine richtige Teilmenge von JavaScript ist:

JSON ⊂ JavaScript

Bei JSON müssen die Namen von Name / Wert-Paaren in Anführungszeichen gesetzt werden, bei JavaScript nicht (sofern es sich nicht um reservierte Schlüsselwörter handelt).

Also dein erstes Beispiel {"active": "yes"} ist sowohl gültiges JSON als auch gültiges JavaScript, während das zweite Beispiel {active: "yes"} ist nur gültiges JavaScript.


2 für die Antwort № 4

In JavaScript, {"active": "yes"}, {"active": "yes"}, {"active": "yes"} und {active: "yes"} sind alle gleich - wenn Sie ein reserviertes Schlüsselwort verwenden (wie Meder betont), Sie Muss Zitieren Sie den Schlüssel - ansonsten muss der Schlüssel nicht zitiert werden.

In JSON dagegen alle Schlüssel und Werte Muss zitiert werden mit ".
{"active": "yes"} ist gültiger JSON.
{"active": "yes"}, {"active": "yes"} und {active: "yes"} sind nicht.


0 für die Antwort № 5

Wenn Sie dies für JSON verwenden, wird der Name (active) muss in Anführungszeichen gesetzt werden. Ohne JavaScript funktioniert es immer noch, aber es ist technisch falsch formatiertes JSON.
Sehen: http://json.org/
Notiere dass der object, benötigt ein string für den Namen (das Bit vor dem Doppelpunkt).