Vai al contenuto
jsonbeautifiers
Italiano
Python Verificato eseguendo il parser su CPython 3.14.3.

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

A un backslash dentro una stringa JSON segue un carattere che non è nessuno dei nove escape di JSON. Nel codice Python la confusione raddoppia, perché anche il literal di stringa Python consuma backslash: il testo che arriva al parser non è quello che hai scritto.

Incolla il tuo JSON e vedi esattamente dove si rompe

Input

Nulla di ciò che incolli lascia il tuo browser. L’allowlist connect-src ne fa una garanzia del browser anziché una promessa. Verificalo tu stesso

Che cosa lo provoca davvero

In ordine di quanto spesso ciascuno si rivela essere la risposta.

  1. 01 Un percorso Windows

    Ogni backslash va raddoppiato per JSON, e in un literal Python non raw va raddoppiato ancora per Python. Usare una raw string toglie uno di questi strati.

    Si rompe

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

    Funziona

    json.loads(r'{"p": "C:\\Users"}')
  2. 02 Un’espressione regolare

    \d, \s e \w non sono escape JSON. Raddoppia ogni backslash.

  3. 03 Un escape esadecimale \x

    JSON ha solo \uXXXX. \x41 deve diventare \u0041.

Lo stesso errore in altri runtime

Il problema di fondo è identico; cambia solo la formulazione. Se un collega segnala uno di questi messaggi, sta guardando esattamente la stessa cosa che vedi tu.

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

Domande frequenti

Perché la stessa stringa funziona in un posto e in un altro no?
Dipende da quanti literal di stringa attraversa. Un percorso scritto direttamente in un file .json richiede un livello di raddoppio. Lo stesso percorso dentro un literal Python dentro un argomento di shell può richiederne tre.
È la stessa cosa del SyntaxWarning sulle sequenze di escape non valide?
No, ed è facile confonderli. Quel warning è Python che si lamenta del tuo codice sorgente, prima ancora che ci sia di mezzo del JSON. Questo errore arriva dal parser JSON e riguarda il contenuto della stringa.

Risolvilo adesso

Incolla il payload nello strumento qui sopra, oppure vai direttamente a quello creato per questo compito.

Esegui l’escape correttamente