Question

Exemple: Le code suivant valide contre la JSON Spec ?

{
    precision: "zip"
}

Ou devrais-je toujours utiliser la syntaxe suivante? (Et si oui, pourquoi?)

{
    "precision": "zip"
}

Je n'ai pas vraiment trouvé quelque chose à ce sujet dans les spécifications JSON. Bien qu'ils utilisent des guillemets autour de leurs clés dans leurs exemples.

Était-ce utile?

La solution

Oui, vous avez besoin de guillemets. Est de rendre plus simple et d'éviter d'avoir à une autre méthode d'échappement pour javascript mots-clés réservés, à savoir {for:"foo"}.

Autres conseils

Vous avez raison d'utiliser des chaînes comme la clé. Voici un extrait de RFC 4627 - L'application / JSON Type de support pour JavaScript Object Notation (JSON)

  

2.2. Objets

     

Une structure d'objet est représenté par une paire d'accolades     zéro ou plusieurs paires nom / valeur environnantes (ou des membres). Un nom est     chaîne . Un colon unique vient après chaque nom, le nom de séparation     à partir de la valeur. Une virgule sépare une valeur à partir d'une suite     Nom. Les noms dans un objet doit être unique.

     

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

     

member = string name-separator value

     

[...]

     

2,5. Cordes

     

La représentation des chaînes est similaire aux conventions utilisées dans le C     famille des langages de programmation. Une chaîne commence et se termine par     guillemets. [...]

     

string = quotation-mark *char quotation-mark

     

quotation-mark = %x22 ; "

Lire la RFC .

De 2.2. Objets

  

Une structure d'objet est représenté par une paire d'accolades autour de zéro ou plusieurs paires nom / valeur (ou des membres). Un nom est une chaîne.

et de 2,5. Cordes

  

Une chaîne commence et se termine par des guillemets.

Je dirais donc que, selon la norme: oui, vous devez toujours indiquer la clé (bien que certains parseurs peuvent être plus indulgents)

Oui, les guillemets sont obligatoires. http://json.org/ dit:

string
    ""
    " chars "

Puisque vous pouvez mettre « parent.child » notation en pointillé et vous ne devez pas mettre parent [ « enfant »] qui est aussi valable et utile, je dirais que les deux sens est techniquement acceptable. Les parseurs tous devraient faire les deux sens très bien. Si votre analyseur n'a pas besoin de guillemets sur les clés alors il est probablement préférable de ne pas les mettre (gain de place). Il est logique de les appeler des chaînes parce que c'est ce qu'ils sont, et que les crochets vous donne la possibilité d'utiliser des valeurs pour les clés essentiellement il est parfaitement logique de ne pas. JSON vous pouvez mettre ...

>var keyName = "someKey";
>var obj = {[keyName]:"someValue"};

>obj
Object {someKey: "someValue"}

juste bien sans problèmes, si vous avez besoin d'une valeur pour une clé et aucune cité ne fonctionnera pas, si elle n'a pas, vous ne pouvez pas, vous ne serez pas si « vous n'avez pas besoin de devis sur clés". Même si elle a raison de dire qu'ils sont techniquement des chaînes. La logique et l'utilisation Prétendre le contraire. Ni elle ne officiellement sortie Object { « someKey »: « someValue »}. Pour obj dans notre exemple courir à partir de la console d'un navigateur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top