Guía
Cómo escapar comillas, barras y saltos de línea en JSON
Aprende a representar comillas, barras invertidas, saltos de línea y caracteres Unicode dentro de una cadena JSON válida.
por Tools in a Tab · Publicado el · Revisado el
Respuesta breve
Dentro de una cadena JSON, una comilla doble se escribe \", una barra
invertida se escribe \\ y un salto de línea se representa como \n. No
puedes insertar una comilla doble o un carácter de control literal sin escapar,
porque cerrarían la cadena o harían que el documento dejara de ser JSON válido.
Tabla de escapes JSON habituales
| Carácter que quieres guardar | Representación dentro de JSON |
|---|---|
Comilla doble " |
\" |
Barra invertida \ |
\\ |
| Salto de línea | \n |
| Retorno de carro | \r |
| Tabulador | \t |
| Retroceso | \b |
| Salto de página | \f |
La barra normal / puede escribirse directamente. JSON también admite \/,
pero escaparla no suele ser necesario.
Ejemplo con comillas y una línea nueva
Este objeto contiene una comilla dentro del mensaje y una ruta de Windows:
{
"mensaje": "Ada dijo: \"listo\"\nSiguiente línea",
"ruta": "C:\\temp\\notas.txt"
}
Al analizarlo, mensaje contiene una línea real entre «listo» y «Siguiente»,
y ruta contiene dos barras invertidas simples. El texto JSON necesita dos
barras por cada barra que forma parte del valor.
Pega el ejemplo en el validador JSON para comprobar la sintaxis. El formateador puede cambiar espacios y saltos situados fuera de las cadenas, pero conserva el contenido representado.
Escape textual frente al carácter resultante
Los dos caracteres \ y n forman la secuencia de escape \n dentro del
documento. Después de analizar el JSON, el valor contiene un único salto de
línea. Si necesitas guardar literalmente una barra seguida de la letra n,
debes escribir \\n en el JSON.
La misma distinción se aplica a una ruta: "C:\\temp" representa
C:\temp. Es frecuente que una segunda capa, como una cadena de JavaScript,
necesite su propio escape. Para evitar contar barras manualmente, construye el
valor y utiliza JSON.stringify:
JSON.stringify({ mensaje: 'Ada dijo: "listo"\nSiguiente línea' });
Unicode y secuencias \u
JSON intercambiado entre sistemas usa UTF-8, por lo que caracteres como ñ o
😀 pueden aparecer directamente. También existe la forma \uXXXX para
unidades del plano básico. Los caracteres fuera de ese plano pueden expresarse
como un par sustituto, aunque normalmente es más legible conservar el carácter
Unicode y dejar que la biblioteca serialice correctamente.
No cortes una cadena en mitad de un par sustituto. Dos representaciones
distintas, como "a\\b" y "a\u005Cb", pueden producir exactamente el mismo
valor después del análisis.
Errores frecuentes
- Usar comillas simples para delimitar cadenas; JSON exige comillas dobles.
- Escribir un salto real dentro de una cadena en vez de
\n. - Escapar dos veces un valor que ya estaba serializado.
- Confundir
\ncon\\ny obtener texto visible en lugar de una línea nueva. - Construir JSON mediante concatenación sin dejar que un serializador escape la entrada.
La sección 7 de RFC 8259 define las cadenas y los escapes permitidos. Cuando el origen sea un valor de programa, serialízalo una sola vez y valida el documento final, no una versión intermedia mostrada por la consola.