Saltar al contenido
jsonbeautifiers
Español
Java Texto del mensaje transcrito de casos reportados; no se ha ejecutado aquí.

Illegal unquoted character ((CTRL-CHAR, code 10))

Una cadena del documento contiene un carácter de control literal. El código 10 es un salto de línea, el 13 un retorno de carro y el 9 un tabulador. JSON exige que vayan escapados, y Jackson hace bien en rechazarlos. Es el mismo problema de fondo que V8 llama «bad control character».

Pega tu JSON y ve exactamente dónde se rompe

Entrada

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.

  1. 01 Texto multilínea incrustado en una cadena

    El SQL, las trazas de pila, las líneas de log y el contenido de plantillas llevan saltos de línea reales.

    Falla

    { "query": "SELECT *
    FROM users" }

    Funciona

    { "query": "SELECT *\nFROM users" }
  2. 02 JSON construido por concatenación

    Los valores interpolados no se escapan. Serializa con ObjectMapper.writeValueAsString en vez de ensamblar el texto a mano.

    Falla

    String body = "{\"note\": \"" + note + "\"}";

    Funciona

    String body = mapper.writeValueAsString(Map.of("note", note));
  3. 03 Finales de línea de Windows dentro de un valor

    El retorno de carro, código 13, es un carácter de control aparte y necesita \r.

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ú.

JavaScript (V8) Bad control character in string literal in JSON at position 11 (line 1 column 12)
Python Invalid control character at: line 1 column 8 (char 7)

Preguntas frecuentes

¿Y ALLOW_UNESCAPED_CONTROL_CHARS?
JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS hace que Jackson los acepte, y es un parche razonable cuando no puedes cambiar al productor. No convierte el documento en JSON válido, así que cualquier otra cosa que lo consuma seguirá fallando.

Arréglalo ahora

Pega el payload en la herramienta de arriba, o ve directamente a la creada para este trabajo.

Escapar el valor