10
votes

Quelle est la différence entre {actif: "oui"} et {"actif": "oui"}?

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"


0 commentaires

5 Réponses :


28
votes

Les deux sont valides. Cependant, il existe certains mots-clés que vous ne pouvez pas utiliser comme Supprimer 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.

, le Spec JSON exige que les clés aient citations autour d'eux:

Une chaîne commence et se termine par
guillemets

donc {clé: 'valeur'}} n'est pas valide JSON, mais est valide JS, tandis que {"Key": "Valeur"} est valide JS et JSON.

Exemples de mots-clés et clés invalides / ambiguës: xxx

autre exemple: xxx


3 commentaires

De plus, de nombreux JSON par exemple ne traitent pas les attributs non notés. En chrome par exemple: json.parse ('{"A": 3}') est ok, json.parse ('{A: 3}') augmente un exception.


En réalité {"Key": "valeur"} n'est pas valide JSON en raison de la nécessité de citations doubles autour des clés et string valeurs.


@Marcel J.: De nombreux analyseurs JSON ne gèrent pas cela parce que {A: 3} n'est pas valide JSON.



11
votes

Les deux sont valides JavaScript (bien que certains noms ne puissent être utilisés que cité, actif ne sont pas parmi eux).

Ce dernier est invalide JSON (les noms cités sont obligatoires dans JSON).


3 commentaires

+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"} ?



2
votes

en JavaScript, {"actif": "oui"} , {'actif': "oui"} , {"actif": "oui '} et {actif:' oui '} sont tous identiques - si vous utilisez un mot-clé réservé (comme points de médaille), vous devez Citez la clé - sinon, la clé n'a pas besoin d'être citée.

en Json, d'autre part, toutes les clés et les valeurs doivent être citées avec ".
{"actif": "oui"} est valide JSON.
{'actif': "oui"} , {"actif": "oui '} et {actif:" oui'} ne sont pas .


2 commentaires

JSON ne reconnaît que " pour citer les chaînes, alors seul le premier exemple est valide JSON.


{"actif": "oui"} 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 :)



0
votes

Si vous utilisez ceci pour JSON, le nom ( actif ) 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 , nécessite une chaîne pour le nom (le bit avant le côlon).


0 commentaires

3
votes

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:

JSON ⊂ JavaScript

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).

Votre premier exemple {"actif": "oui"} est à la fois valide JSON et JavaScript valide alors que le deuxième exemple {actif: "oui"} est seulement JavaScript valide.


0 commentaires