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 \n con \\n y 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.