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 № 1Beides 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).