Sérialiser du JSON
Cet outil transforme un document JSON en littéral de chaîne JSON — la forme échappée, entre guillemets, dont vous avez besoin pour imbriquer une charge utile dans une autre. Il échappe guillemets, antislashs et caractères de contrôle en un seul passage, si bien que le double échappement qu’entraîne une suite de rechercher-remplacer devient impossible.
Comment fonctionne Sérialiser du JSON ?
C’est l’opération qui se cache derrière une tâche récurrente et peu glorieuse : imbriquer une charge utile dans une autre. Un corps de requête dans une définition de webhook. Une fixture dans un fichier de test. Un document de configuration dans la valeur d’une ConfigMap Kubernetes. Une réponse d’exemple dans un champ example d’OpenAPI. Dans chaque cas, le document interne doit devenir une chaîne dans le document externe, ce qui veut dire que chaque guillemet, antislash et saut de ligne qu’il contient doit être échappé.
Beaucoup le font à la main avec du rechercher-remplacer, et ça casse d’une manière précise et prévisible. Si vous remplacez d’abord les guillemets puis les antislashs, l’antislash que vous venez d’ajouter devant chaque guillemet se fait échapper une seconde fois : vous vouliez \" et vous obtenez \", ce qui s’interprète comme un antislash littéral suivi de la fin de la chaîne. Le document semble fonctionner jusqu’à ce qu’il contienne un guillemet.
Un échappement en un seul balayage des caractères rend cela impossible. Chaque caractère est examiné une fois et transformé une fois — " vers \", \ vers \\, saut de ligne vers \n, tabulation vers \t — sans qu’un passage ultérieur puisse retraiter la sortie d’un passage précédent.
RFC 8259 impose d’échapper tout caractère de contrôle inférieur à U+0020, donc tout ce qui n’a pas de forme abrégée devient une séquence \u. Les caractères non ASCII sont laissés tels quels par défaut, car le JSON moderne est en UTF-8 et les échapper ne fait qu’alourdir le résultat et le rendre moins lisible. Quand une cible a réellement besoin d’ASCII pur — un ancien pipeline de logs, un système qui corrompt les octets hauts —, l’option les échappe, et émet correctement une paire de substitution pour tout ce qui est hors du plan multilingue de base, car un seul \u ne peut pas représenter un émoji, et en émettre un seul le tronque.
Par défaut, l’entrée est d’abord validée comme JSON. Échapper quelque chose de cassé produit un littéral de chaîne valide en lui-même, mais dont le contenu fera échouer le parsing plus tard, quelque part de bien moins commode. Désactivez cette validation pour échapper du texte arbitraire, ce qui est utile pour des lignes de log et des extraits de shell.
Document
{"name":"Ada","note":"line one
line two"}Littéral de chaîne
"{\"name\":\"Ada\",\"note\":\"line one\nline two\"}"Quelles options et quels cas limites Sérialiser du JSON prend en charge ?
| Paramètre | Type | Valeur par défaut | Comportement et cas limites |
|---|---|---|---|
| Entourer de guillemets | booléen | true | Émet les guillemets doubles entourants pour que le résultat soit une chaîne JSON complète. Désactivez cette option lorsque vous collez dans un guillemet existant. |
| Échapper les caractères non ASCII | booléen | false | Convertit chaque point de code supérieur à U+007F en \uXXXX. Inutile pour les cibles UTF-8, cela augmente la taille du résultat. Les caractères astraux émettent correctement une paire de substitution plutôt qu’un échappement unique tronqué. |
| Échapper les barres obliques | booléen | false | Écrit / comme \/. Syntaxe JSON valide, requise par quelques logiciels de journalisation et par du JSON intégré dans des blocs HTML <script> où </script> interromprait prématurément l’élément. |
| Exiger un JSON valide | booléen | true | Valide avant d’échapper, pour garantir que la chaîne puisse être analysée pour retrouver le document d’origine. Désactivé, il échappe du texte arbitraire — utile pour les lignes de log et les extraits de shell. |
| Caractères de contrôle | toujours échappés | — | La RFC 8259 interdit les caractères bruts en dessous de U+0020 dans une chaîne. \n \r \t \b \f utilisent leurs formes abrégées ; le reste devient \u00XX. |
| Augmentation de taille | ≈ 5–30% | — | Dépend entièrement du nombre de guillemets et de barres obliques contenus dans la saisie. Un document JSON, qui est principalement composé de guillemets, grossit plus que du texte en prose. |
Questions fréquentes
Quelle est la différence entre cet outil et JSON.stringify en JavaScript ?
JSON.stringify prend une valeur JavaScript et produit du texte JSON. Cet outil prend du texte JSON et produit un littéral de chaîne JSON qui le contient — c’est ce que fait JSON.stringify(someJsonText) quand vous lui passez une chaîne. La distinction compte : stringifier un objet donne {"a":1}, tandis que stringifier le texte {"a":1} donne "{\"a\":1}". Cet outil fait la seconde.
Pourquoi mon JSON échappé à la main a-t-il cassé ?
Presque toujours une erreur d’ordre. Remplacer les guillemets avant les antislashs fait échapper une seconde fois l’antislash que chaque remplacement vient d’introduire, si bien que \" devient \\" et que la chaîne se termine prématurément. Ça fonctionne jusqu’à ce que le document contienne un guillemet — ce qui, pour du JSON, signifie immédiatement. Examiner chaque caractère exactement une fois, comme le fait cet outil, supprime cette possibilité.
Comment faire l’opération inverse ?
Utilisez « Récupérer du JSON échappé », qui prend le littéral et rend le document. Il est délibérément tolérant : il gère un fragment qui a perdu ses guillemets englobants, l’état habituel de tout ce qu’on copie depuis une ligne de log ou une trace de pile.
Faut-il échapper les barres obliques ?
En général, non. JSON autorise \/ mais aucun parser ne l’exige. Les deux cas où cela compte : du JSON intégré directement dans un bloc HTML <script>, où un </script> littéral à l’intérieur d’une chaîne fermerait l’élément prématurément, et une poignée de collecteurs de logs qui attendent la forme échappée.
Ma charge utile est-elle envoyée quelque part ?
Non. L’échappement se produit dans cet onglet du navigateur. Les documents qu’on imbrique dans d’autres documents sont généralement des fixtures, des corps de requêtes API et de la configuration — exactement ce qui ne devrait pas traverser un serveur inconnu pour se faire changer ses guillemets.
Pourquoi ma chaîne échappée casse-t-elle quand je la colle dans une commande shell ?
Parce que deux niveaux de guillemets sont en jeu et qu’un seul est celui de JSON. Cet outil produit un littéral de chaîne JSON valide ; le shell applique ensuite ses propres règles à ce que vous collez, et un guillemet double que JSON a écrit \" reste un guillemet double pour bash. Englobez toute la valeur dans des guillemets simples, ou écrivez-la dans un fichier et passez le chemin du fichier à la place.
Quels outils liés devriez-vous utiliser ensuite ?
- Convertir JSON en CSVTransforme des enregistrements en feuille de calcul, imbrications comprises
- Convertir CSV en JSONLit un export de feuille de calcul, guillemets compris
- Récupérer du JSON échappéRetrouve un document noyé dans les séquences d’échappement
- Convertir JSON en TypeScriptGénère des interfaces depuis un exemple, optionnels compris