Je suis consterné par la présence d'informations erronées fortement votées sur une question aussi populaire portant sur un sujet de base.
Chaînes JSON ne peut pas être placé entre guillemets simples . Les différentes versions de la spécification ( l'original par Douglas Crockford, la version ECMA et le Version IETF ) indiquent tous que les chaînes de caractères doivent être citées avec des guillemets doubles. Il ne s'agit pas d'une question théorique, ni d'une question d'opinion comme le suggère actuellement la réponse acceptée ; n'importe quel analyseur JSON dans le monde réel se trompera si vous essayez de lui faire analyser une chaîne de caractères entre guillemets simples.
Les versions de Crockford et de l'ECMA affichent même la définition d'une chaîne de caractères à l'aide d'une jolie image, ce qui devrait rendre le message clair et sans ambiguïté :
La jolie image énumère é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 à ce qui est dit dans d'autres réponses ici, il n'y a pas d'absurdité, \'
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 mises entre guillemets.
Enfin, vous ne devriez normalement pas avoir à vous préoccuper de l'échappement des caractères lors de l'utilisation de la fonction de manière programmée générant du JSON (bien que vous le fassiez évidemment lorsque vous éditez manuellement, par exemple, un fichier de configuration basé sur du JSON). Au lieu de cela, formez la structure de données que vous souhaitez encoder en utilisant les types natifs map, array, string, number, boolean et null dont dispose votre langage, puis encodez-la en JSON à l'aide d'une fonction d'encodage JSON. Une telle fonction est probablement intégrée au langage que vous utilisez, comme la fonction JSON.stringify
, de PHP json_encode
ou de Python json.dumps
. Si vous utilisez un langage qui ne dispose pas d'une telle fonctionnalité, vous pouvez probablement trouver une bibliothèque d'analyse et d'encodage JSON à utiliser. Si vous utilisez simplement les fonctions du langage ou de la bibliothèque pour convertir des éléments depuis et vers JSON, vous n'aurez jamais besoin de connaître les règles d'échappement de JSON. C'est ce que l'auteur de la question aurait dû faire.