Exemple: le code suivant est-il valide par rapport à 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 citations autour de leurs clés dans leurs exemples.
Oui, vous avez besoin de guillemets. Cela simplifie les choses et évite de recourir à une autre méthode d'échappement pour les mots clés réservés javascript, à savoir {for:"foo"}
.
Vous avez raison d'utiliser des chaînes comme clé. Voici un extrait de RFC 4627 - Le type de support application/json pour la notation d'objet JavaScript (JSON)
2.2. Objets
Une structure d'objet est représentée par une paire d'accolades entourant zéro ou plusieurs paires nom/valeur (ou membres). Un nom est une chaîne de caractères . Un seul deux-points vient après chaque nom, séparant le nom de la valeur. Une seule virgule sépare une valeur du nom suivant. Les noms contenus dans un objet DEVRAIENT être uniques.
object = begin-object [ member *( value-separator member ) ] end-object
member = string name-separator value
[...]
2.5. Les cordes
La représentation des chaînes est similaire aux conventions utilisées dans la famille de langages de programmation C. Une chaîne commence et finit par des guillemets. [...]
string = quotation-mark *char quotation-mark
quotation-mark = %x22 ; "
Lire le RFC entier ici .
De 2.2. Objets
Une structure d'objet est représentée par une paire d'accolades entourant zéro ou plusieurs paires nom/valeur (ou membres). Un nom est une chaîne.
et de 2.5. Cordes
Une chaîne commence et finit par des guillemets.
Donc, je dirais que selon le standard: oui, vous devriez toujours citer la clé (même si certains analyseurs peuvent être plus indulgents)
Oui, les devis sont obligatoires. http://json.org/ dit:
string
""
" chars "