web-dev-qa-db-fra.com

Quels caractères sont valides / invalides dans un nom de clé JSON?

Existe-t-il des caractères interdits dans les noms de clé, pour les objets JavaScript ou les chaînes JSON? Ou des personnages à échapper?

Pour être plus précis, j'aimerais utiliser "$", "-" et l'espace dans les noms de clé.

124
Christophe

Non. Toute chaîne valide est une clé valide. Il peut même avoir " tant que vous y échappez:

{"The \"meaning\" of life":42}

Vous rencontrerez peut-être des difficultés pour charger de telles valeurs dans certaines langues, qui tentent d'associer des clés à des noms de champs d'objet. Je ne connais pas de tels cas, cependant.

150
Marcelo Cantos

Les caractères suivants doivent être échappés dans les données JSON pour éviter tout problème

' simple citation

" citation

\ backslash

tous les caractères de contrôle comme\n\t

JSON Parser peut vous aider à gérer JSON.

EDIT: Voici un analyseur JSON de remplacement car le lien entre OP est mort

47
Arun Rana

Il est à noter que bien que le démarrage des clés avec des chiffres soit valide, il peut entraîner des problèmes inattendus.

C'EST À DIRE:

var testObject = {
    "1tile": "test value"
};
console.log(testObject.1tile); // fails, invalid syntax
console.log(testObject["1tile"]; // workaround
8
karns

Les points de code Unicode U + D800 à U + DFFF doivent être évités: ils sont invalides en Unicode car ils sont réservés aux paires de substitution UTF-16. Certains encodeurs/décodeurs JSON les remplaceront par U + FFFD. Voir par exemple comment le langage Go et sa bibliothèque JSON les traitent .

Donc, évitez "\ uD800" à "\ uDFFF" seul (pas par paires de substitution).

7
dolmen