Las líneas del código fuente y las del valor son distintas
En una cadena JSON, una barra inversa seguida de n representa un salto. Dos barras hacen que el valor conserve una barra y n como dos caracteres. Ambos ejemplos son válidos, pero los valores text analizados tienen longitudes de 3 y 4.
{"text":"A\nB"}
{"text":"A\\nB"}
JSON.parse('{"text":"A\\nB"}').text.length // 3
JSON.parse('{"text":"A\\\\nB"}').text.length // 4Un salto real dentro de una cadena produce un error
RFC 8259 exige escapar los caracteres de control U+0000 a U+001F dentro de cadenas, incluido LF literal. Entre tokens se permiten LF, CR, tabulaciones y espacios. En estas pruebas se rechazó LF literal dentro de la cadena, pero se aceptó un objeto en varias líneas.
const invalid = '{"text":"A' + '\n' + 'B"}';
formatJSON(invalid); // throws
formatJSON('{\n"text":"AB"\n}'); // acceptedDistingue el formato del código de la interpretación del valor
Moyoutil conserva los tokens de las cadenas y cambia la sangría exterior. No convierte \n en un salto visible dentro del valor. La minificación también conserva los escapes. Si falla, revisa comillas y barras cerca de la posición indicada. Añadir barras a toda la entrada puede alterar valores correctos.
Ejecuta el formato y la validación con los ejemplos y compara la versión minificada. Si el valor necesita un salto, serializa la cadena con JSON.stringify al generar JSON y verifica el valor con JSON.parse. Validar la sintaxis no valida los campos obligatorios del esquema de una API.
Preguntas frecuentes
¿Minificar JSON elimina los saltos en los valores?
No. Reduce espacios fuera de las cadenas. Esta herramienta conserva los escapes de las cadenas y los saltos de los valores analizados.