Bad escaped character in JSON at position N (line L column C)
JSON admite exactamente nueve secuencias de escape: \" \\ \/ \b \f \n \r \t y \uXXXX. Cualquier otra cosa detrás de una barra invertida es un error. Una barra invertida suelta en una ruta de Windows es casi siempre la causa, porque \U, \P y \D no son escapes.
Pega tu JSON y ve exactamente dónde se rompe
Nada de lo que pegues sale de tu navegador. La lista de permitidos de connect-src convierte eso en una garantía del navegador, no en una promesa. Compruébalo tú mismo
Qué lo provoca realmente
Ordenados por la frecuencia con la que cada uno acaba siendo la respuesta.
-
01 Una ruta de archivo de Windows con barras invertidas simples
Esta es la causa dominante. Cada barra invertida dentro de una cadena JSON debe ir duplicada. Las barras normales también funcionan en Windows en casi todos los contextos y evitan el problema por completo.
Falla
{ "path": "C:\Users\priya\config.json" }Funciona
{ "path": "C:\\Users\\priya\\config.json" } -
02 Un escape hexadecimal tomado prestado de otro lenguaje
JSON no tiene el escape \x. C, Python y JavaScript aceptan \x41 para la letra A; JSON exige \u0041.
Falla
{ "c": "\x41" }Funciona
{ "c": "\u0041" } -
03 Una expresión regular pegada dentro de una cadena
Patrones como \d, \s y \w no son escapes de JSON. Cada barra invertida del patrón hay que duplicarla antes de meterla en una cadena JSON.
Falla
{ "pattern": "^\d{3}-\d{4}$" }Funciona
{ "pattern": "^\\d{3}-\\d{4}$" } -
04 Un escape de comilla simple
\' es válido en JavaScript y en JSON5, pero no en JSON. Dentro de una cadena con comillas dobles, un apóstrofo no necesita ningún escape.
El mismo error en otros entornos
El problema de fondo es idéntico; solo cambia la redacción. Si un compañero reporta alguno de estos, está mirando exactamente lo mismo que tú.
| Python | Invalid \escape: line 1 column 9 (char 8) |
|---|
Preguntas frecuentes
- ¿Por qué mi cadena de Python parece correcta y aun así falla?
- Porque la barra invertida se consume dos veces: una por el literal de cadena de Python y otra por JSON. Usa una cadena raw para el literal, o construye el objeto y llama a json.dumps en vez de escribir JSON a mano.
- ¿De verdad se permite \/?
- Sí. Escapar una barra normal es opcional en JSON y ambas formas significan el mismo carácter. Existe para que se pueda incrustar JSON con seguridad dentro de una etiqueta script en HTML, donde la secuencia </ terminaría el elemento.
Arréglalo ahora
Pega el payload en la herramienta de arriba, o ve directamente a la creada para este trabajo.
Escapar una cadena correctamente