Bad escaped character in JSON at position N (line L column C)
JSON ammette esattamente nove sequenze di escape: \" \\ \/ \b \f \n \r \t e \uXXXX. Qualsiasi altra cosa dopo un backslash è un errore. Un backslash singolo in un percorso Windows ne è quasi sempre la causa, perché \U, \P e \D non sono escape.
Incolla il tuo JSON e vedi esattamente dove si rompe
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.
-
01 Un percorso di file Windows con backslash singoli
È la causa dominante. Ogni backslash dentro una stringa JSON va raddoppiato. Anche le barre normali funzionano su Windows nella maggior parte dei contesti ed evitano del tutto il problema.
Si rompe
{ "path": "C:\Users\priya\config.json" }Funziona
{ "path": "C:\\Users\\priya\\config.json" } -
02 Un escape esadecimale preso in prestito da un altro linguaggio
JSON non ha l’escape \x. C, Python e JavaScript accettano tutti \x41 per la lettera A; JSON richiede \u0041.
Si rompe
{ "c": "\x41" }Funziona
{ "c": "\u0041" } -
03 Un’espressione regolare incollata dentro una stringa
Pattern come \d, \s e \w non sono escape JSON. Ogni backslash del pattern va raddoppiato prima di finire dentro una stringa JSON.
Si rompe
{ "pattern": "^\d{3}-\d{4}$" }Funziona
{ "pattern": "^\\d{3}-\\d{4}$" } -
04 Un escape per l’apice singolo
\' è valido in JavaScript e in JSON5 ma non in JSON. Dentro una stringa tra virgolette doppie un apostrofo non richiede alcun escape.
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.
| Python | Invalid \escape: line 1 column 9 (char 8) |
|---|
Domande frequenti
- Perché la mia stringa Python sembra giusta e fallisce comunque?
- Perché il backslash viene consumato due volte: una dal literal di stringa Python e una da JSON. Usa una raw string per il literal, oppure costruisci l’oggetto e chiama json.dumps invece di scrivere JSON a mano.
- \/ è davvero ammesso?
- Sì. Fare l’escape di una barra è facoltativo in JSON ed entrambe le forme indicano lo stesso carattere. Esiste perché il JSON possa essere incorporato in sicurezza dentro un tag script in HTML, dove la sequenza </ chiuderebbe l’elemento.
Risolvilo adesso
Incolla il payload nello strumento qui sopra, oppure vai direttamente a quello creato per questo compito.
Esegui l’escape di una stringa