Échapper et déséchapper des chaînes JSON (avec exemples)

By Help2Code Editorial Team Published 16 Jun 2026 Updated 22 Oct 2026 698 words

JSON utilise un ensemble spécifique de séquences d'échappement pour inclure des caractères spéciaux dans des chaînes. Si votre chaîne contient un guillemet double, un antislash ou des caractères de contrôle, vous devez les échapper pour que le JSON soit valide. Comprendre l'échappement JSON est essentiel pour générer une sortie JSON correcte et pour déboguer des charges utiles mal formées.

Séquences d'échappement JSON

Caractère Séquence d'échappement Description
" \" Guillemets doubles
\ \\ Antislash
/ \/ Slash
\b \\b Retour arrière
\f \\f Saut de page
\n \\n Nouvelle ligne
\r \\r Retour chariot
\t \\t Tabulation
\uXXXX \\uXXXX Caractère Unicode hexadécimal

Quand l'échappement est nécessaire

Si vous intégrez une chaîne générée par l'utilisateur dans une charge utile JSON, vous devez l'échapper. Prenons un objet JSON où le champ name contient un guillemet double :

{"name": "John "The Man" Doe"}

Ce JSON est invalide parce que les guillemets doubles à l'intérieur de la valeur terminent la chaîne prématurément. La sortie correcte est :

{"name": "John \"The Man\" Doe"}

Méthodes spécifiques selon le langage

JavaScript

JavaScript fournit JSON.stringify() qui échappe automatiquement les chaînes.

const user = { name: 'John "The Man" Doe' };
const json = JSON.stringify(user);
console.log(json);
// Sortie : {"name":"John \"The Man\" Doe"}

// Échappement manuel (rarement nécessaire)
function escapeJson(str) {
  return str
    .replace(/\\/g, '\\\\')
    .replace(/"/g, '\\"')
    .replace(/\n/g, '\\n')
    .replace(/\r/g, '\\r')
    .replace(/\t/g, '\\t')
    .replace(/\f/g, '\\f');
}

// Déséchapper
function unescapeJson(str) {
  return JSON.parse(`"${str}"`);
}

PHP

// Échappement automatique via json_encode
$data = ['name' => 'John "The Man" Doe'];
echo json_encode($data);
// Sortie : {"name":"John \"The Man\" Doe"}

// Échappement manuel
$escaped = addslashes('John "The Man" Doe');
echo $escaped;
// Sortie : John \"The Man\" Doe

// Le drapeau JSON_UNESCAPED_UNICODE conserve les caractères Unicode
echo json_encode(['emoji' => '😀'], JSON_UNESCAPED_UNICODE);
// Sortie : {"emoji":"😀"}

Python

import json

# Échappement automatique via json.dumps
data = {"name": 'John "The Man" Doe'}
print(json.dumps(data))
# Sortie : {"name": "John \"The Man\" Doe"}

# Mise en forme lisible avec échappement
print(json.dumps(data, indent=2))

# Assurer l'échappement ASCII
print(json.dumps({"emoji": "😀"}, ensure_ascii=True))
# Sortie : {"emoji": "\ud83d\ude00"}

Ruby

require 'json'

data = { name: 'John "The Man" Doe' }
puts JSON.generate(data)
# Sortie : {"name":"John \"The Man\" Doe"}

# Ou avec formatage lisible
puts JSON.pretty_generate(data)

Erreurs courantes

Le double échappement se produit lorsque vous échappez une chaîne déjà échappée. La séquence \" devient \\\" si elle est à nouveau échappée, et le JSON se retrouve corrompu.

L'absence d'échappement Unicode pour les caractères non ASCII. Bien que JSON supporte Unicode directement dans un environnement UTF-8, certains anciens parseurs attendent des séquences \uXXXX. Le drapeau ensure_ascii de Python contrôle ce comportement.

Ne pas échapper les caractères de contrôle. Un retour à la ligne brut à l'intérieur d'une chaîne JSON est invalide. Utilisez toujours \n à la place.

Outil en ligne

L'outil JSON Escape & Unescape de Help2Code permet d'échapper et de déséchapper instantanément des chaînes. Collez votre chaîne, choisissez la direction et copiez le résultat. C'est le moyen le plus rapide d'échapper une chaîne pour l'inclure dans une charge utile JSON.

Échappement dans des contextes imbriqués

Quand JSON est intégré dans un autre format comme HTML ou une URL, vous devez appliquer plusieurs couches d'échappement. Une chaîne JSON à l'intérieur d'une valeur d'attribut HTML doit être échappée en JSON puis encodée en entités HTML :

<div data-config='{"name":"John &quot;The Man&quot; Doe"}'>

Le JSON utilise \" pour les guillemets, puis l'attribut HTML utilise &quot; pour la chaîne JSON. Les deux couches sont nécessaires pour obtenir un rendu valide.

Conclusion

L'échappement correct du JSON garantit que vos données sont sérialisées correctement et que vos parseurs JSON n'entrent pas en difficulté avec les caractères spéciaux. Utilisez les fonctions natives de sérialisation JSON de votre langage plutôt qu'un échappement manuel en production. Pour des tâches rapides d'échappement, l'outil en ligne JSON Escape & Unescape est l'option la plus rapide.


About this article

Apprenez à échapper et déséchapper correctement des chaînes JSON en JavaScript, PHP, Python et d'autres langages.


Related Articles


Related Tools