Aller au contenu
jsonbeautifiers
Français
Python Vérifié en exécutant l’analyseur sur CPython 3.14.3.

Invalid \escape: line L column C (char N)

Un antislash dans une chaîne JSON est suivi d’un caractère qui n’est aucun des neuf échappements JSON. Dans du code Python la confusion double, car le littéral de chaîne Python consomme lui aussi des antislashs : le texte qui parvient à l’analyseur n’est donc pas celui que vous avez tapé.

Collez votre JSON et voyez exactement où il casse

Entrée

Rien de ce que vous collez ne quitte votre navigateur. La liste d’autorisation connect-src en fait une garantie du navigateur plutôt qu’une promesse. Vérifiez-le vous-même

Ce qui le provoque réellement

Classés selon la fréquence à laquelle chacun se révèle être la réponse.

  1. 01 Un chemin Windows

    Chaque antislash doit être doublé pour JSON, et dans un littéral Python non brut il doit l’être encore une fois pour Python. Utiliser une chaîne brute supprime l’une de ces couches.

    Casse

    json.loads('{"p": "C:\Users"}')

    Fonctionne

    json.loads(r'{"p": "C:\\Users"}')
  2. 02 Une expression régulière

    \d, \s et \w ne sont pas des échappements JSON. Doublez chaque antislash.

  3. 03 Un échappement hexadécimal \x

    JSON n’a que \uXXXX. \x41 doit devenir \u0041.

La même erreur dans d’autres environnements

Le problème de fond est identique ; seule la formulation change. Si un collègue signale l’un de ces messages, il regarde exactement la même chose que vous.

JavaScript (V8) Bad escaped character in JSON at position 9 (line 1 column 10)

Questions fréquentes

Pourquoi la même chaîne fonctionne-t-elle à un endroit et pas à un autre ?
À cause du nombre de littéraux de chaîne qu’elle traverse. Un chemin écrit directement dans un fichier .json demande un niveau de doublement. Le même chemin dans un littéral Python à l’intérieur d’un argument de shell peut en demander trois.
Est-ce la même chose que le SyntaxWarning sur les séquences d’échappement invalides ?
Non, et on les confond facilement. Cet avertissement, c’est Python qui se plaint de votre code source, avant que le moindre JSON soit en jeu. Cette erreur-ci vient de l’analyseur JSON et porte sur le contenu de la chaîne.

Corrigez-le maintenant

Collez le payload dans l’outil ci-dessus, ou allez directement à celui conçu pour ce travail.

L’échapper correctement