Je suis consterné par la présence de fausses informations très votées sur une question aussi bien vue sur un sujet fondamental.
Les chaînes JSON ne peuvent pas être entre guillemets simples . Les différentes versions de la spécification ( l'original par Douglas Crockford, la version ECMA et la version IETF ) indiquent toutes que les chaînes doivent être entre guillemets. Ce n'est pas une question théorique, ni une question d'opinion comme le suggère actuellement la réponse acceptée; tout analyseur JSON dans le monde réel affichera une erreur si vous essayez de le faire analyser une chaîne entre guillemets simples.
La version de Crockford et de l'ECMA affiche même la définition d'une chaîne à l'aide d'une jolie image, ce qui devrait clarifier le point sans ambiguïté:
La jolie image répertorie également toutes les séquences d'échappement légitimes dans une chaîne JSON:
\"
\\
\/
\b
\f
\n
\r
\t
\u
suivi de quatre chiffres hexadécimaux
Notez que, contrairement au non-sens dans certaines autres réponses ici, \'
n'est jamais une séquence d'échappement valide dans une chaîne JSON. Ce n'est pas nécessaire, car les chaînes JSON sont toujours entre guillemets.
Enfin, vous ne devriez normalement pas avoir à penser à échapper des caractères vous-même lors de la génération par programme de JSON (bien sûr, vous le ferez lors de l'édition manuelle, par exemple, d'un fichier de configuration basé sur JSON). Au lieu de cela, formez la structure de données que vous souhaitez coder en utilisant les types de carte, tableau, chaîne, nombre, booléen et null natifs de votre langue, puis codez-les en JSON avec une fonction de codage JSON. Une telle fonction est probablement intégrée dans le langage que vous utilisez, comme JavaScript JSON.stringify
, PHPjson_encode
ou Python.json.dumps
. Si vous utilisez un langage qui n'a pas une telle fonctionnalité intégrée, vous pouvez probablement trouver une bibliothèque d'analyse et de codage JSON à utiliser. Si vous utilisez simplement des fonctions de langage ou de bibliothèque pour convertir des éléments vers et depuis JSON, vous n'aurez même jamais besoin de connaître les règles d'échappement de JSON. C'est ce que le questionneur erroné aurait dû faire ici.