J'ai utilisé Firebug pour tester les deux cas et ils semblent assez similaires par résultat:
>>> var x = {"active": "yes"}
>>> x.active
"yes"
>>> var x = {active: "yes"}
>>> x.active
"yes"
5 Réponses :
Les deux sont valides. Cependant, il existe certains mots-clés que vous ne pouvez pas utiliser comme , le Spec JSON exige que les clés aient citations autour d'eux: P> Une chaîne commence et se termine par donc Exemples de mots-clés et clés invalides / ambiguës: p> autre exemple: p> Supprimer code> afin d'éviter que vous les enveloppez dans des guillemets afin qu'ils ne soient pas traités littéralement par l'analyseur ECMAScript et sont explicitement spécifiés comme des chaînes.
guillemets p>
blockQuote> {clé: 'valeur'}} code> n'est pas valide JSON, mais est valide JS, tandis que {"Key": "Valeur"} est valide JS et JSON. P>
De plus, de nombreux JSON par exemple ne traitent pas les attributs non notés. En chrome par exemple: json.parse ('{"A": 3}') code> est ok, json.parse ('{A: 3}') code> augmente un exception.
En réalité {"Key": "valeur"} code> n'est pas valide JSON en raison de la nécessité de citations doubles autour des clés et string i> valeurs.
@Marcel J.: De nombreux analyseurs JSON ne gèrent pas cela parce que {A: 3} code> n'est pas valide JSON.
Les deux sont valides JavaScript (bien que certains noms ne puissent être utilisés que cité, Ce dernier est invalide JSON (les noms cités sont obligatoires dans JSON). P> actif code> ne sont pas parmi eux). P>
+1, la distinction importante est que l'une est JSON, et l'autre n'est pas.
@MOLF: JSON n'est pas non plus techniquement;)
@Roatin: désolé? Qu'est-ce qui n'est pas json à propos de {"actif": "oui"} code>?
en JavaScript, en Json, d'autre part, toutes les clés et em> les valeurs {"actif": "oui"} code>, {'actif': "oui"} code>, {"actif": "oui '} code> et {actif:' oui '} code> sont tous identiques - si vous utilisez un mot-clé réservé (comme points de médaille), vous devez em> Citez la clé - sinon, la clé n'a pas besoin d'être citée. P>
" code>.
{"actif": "oui"} code> est valide JSON.
{'actif': "oui"} code>, {"actif": "oui '} code> et {actif:" oui'} code> ne sont pas . p>
JSON ne reconnaît que " code> pour citer les chaînes, alors seul le premier exemple est valide JSON.
{"actif": "oui"} code> n'est toujours pas valide. Les règles de citation concernent toutes les chaînes, pas seulement les noms clés. JSON a un manque distinct de TMTOWTDI :)
Si vous utilisez ceci pour JSON, le nom ( actif code>) doit être placé entre guillemets. Cela fonctionnera toujours en JavaScript sans cela, mais c'est techniquement mal formé JSON.
Voir: http://json.org/
Notez que l'objet code>, nécessite une chaîne code> pour le nom (le bit avant le côlon). P>
Chaque JSON valide est également valide JavaScript mais que tous les JavaScript valides sont également valides JSON car JSON est un sous-ensemble approprié de JavaScript: P>
JSON ⊂ JavaScript P> blockQuote>
JSON nécessite que les noms des paires de noms / valeur soient indiqués pendant que JavaScript ne le fait pas (tant qu'ils ne sont pas des mots-clés réservés). P>
Votre premier exemple
{"actif": "oui"} code> est à la fois valide JSON et JavaScript valide alors que le deuxième exemple{actif: "oui"} code> est seulement JavaScript valide. P>