100 % local — vos données ne quittent jamais votre navigateur

Texte en chaîne JSON — à coller dans un payload

Transformez un texte en littéral de chaîne JSON, guillemets compris. Deux terminateurs de ligne invisibles sont échappés : la valeur se colle dans un curl.

Instantané Privé Zéro cookie

Entrée Text

Sortie JSON String

Ce que fait cet outil

Votre texte devient un littéral de chaîne JSON : guillemets englobants, et chaque caractère qui ne peut pas figurer brut remplacé par son échappement.

  • " devient \", une barre oblique inverse devient \\ ;
  • un saut de ligne devient \n, une tabulation \t, un retour chariot \r ;
  • les autres caractères de contrôle deviennent \u00XX.

é et 😀 restent tels quels. JSON est un format Unicode, et une chaîne lisible vaut mieux qu’un mur d’échappements.

Deux caractères que les encodeurs ordinaires laissent bruts

U+2028 (séparateur de ligne) et U+2029 (séparateur de paragraphe) ressortent en \u2028 et \u2029. Un encodeur JSON standard les laisse littéraux.

Les deux écritures sont du JSON valide. L’échappée est plus sûre, pour une raison historique toujours active : en JavaScript avant ES2019, ces deux caractères étaient des terminateurs de ligne, si bien qu’un littéral de chaîne qui en contenait un brut était une erreur de syntaxe. Tout ce qui prend du JSON et l’évalue comme du JavaScript — un vieil eval, un point d’entrée JSONP, un empaqueteur qui incorpore un fichier de données — tombe dessus. L’échappement coûte trois caractères et supprime toute la classe de pannes.

Un demi-substitut isolé ne produit pas une sortie cassée

Un texte peut contenir la moitié d’une paire de substitution : une chaîne coupée au mauvais indice, un champ tronqué sorti d’une base. La sortie l’échappe en \ud800 plutôt que de l’émettre brut.

C’est important parce qu’un demi-substitut brut ne peut tout simplement pas être encodé en UTF-8. Échappé, le JSON reste valide, reste de l’UTF-8, et le caractère abîmé est visible dans la sortie au lieu de corrompre le fichier qui la porte.

Ce qui n’est pas échappé

La barre oblique. \/ est du JSON légal, et certains encodeurs l’émettent pour que </script> n’apparaisse jamais dans la sortie, mais ce n’est pas exigé et cela rend le résultat moins lisible.

Si vous incorporez le résultat dans une page HTML, traitez </script> au niveau HTML : un analyseur HTML ferme l’élément à cette séquence où qu’elle apparaisse, et aucun échappement JSON n’y change rien.

Confidentiel par conception

Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.

Questions fréquentes

Pourquoi é n’est-il pas échappé en \u00e9 ?
Parce que JSON est un format Unicode et que `é` est un caractère légal dans une chaîne. L’encodage du document le porte. N’échapper tout le non-ASCII n’est utile que si le canal est en ASCII seul — c’est à cela que sert `ensure_ascii=True` en Python — et cela grossit la sortie et la rend moins lisible sans autre bénéfice.
Pourquoi la sortie contient-elle les guillemets ?
Parce qu’une chaîne JSON *est* les guillemets plus le contenu échappé. Ne vous rendre que l’intérieur inviterait à le coller là où les guillemets manquent, c’est-à-dire exactement là où l’échappement cesse d’être correct. Vous pouvez les retirer si votre gabarit les fournit déjà.
Puis-je coller cela directement dans une balise <script> ?
Pas les yeux fermés. Le résultat est du JSON valide, et les deux terminateurs de ligne qui cassaient les littéraux JavaScript sont échappés. Mais un analyseur HTML termine toujours l’élément script au premier `</script>` du source, chaîne ou pas : un texte contenant cette séquence demande un traitement à part, au niveau HTML.
` du source, chaîne ou pas : un texte contenant cette séquence demande un traitement à part, au niveau HTML."}}]}

Convertisseurs associés