araç köşesi

Escapar / desescapar JSON

Convierta JSON o cualquier texto en una cadena literal para pegar en código, o desescape una cadena para volver a un JSON legible

Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.

Cómo funciona

Hay dos usos típicos. El primero es meter JSON dentro de una cadena: si necesita JSON en una prueba unitaria, una columna de base de datos o un campo de otro JSON, pegue el JSON a la izquierda y deje seleccionado Escapar. A la derecha sale una cadena de una sola línea entre comillas dobles, con una barra invertida antes de cada comilla interior y \n en cada salto de línea: {"nombre":"x"} → "{\"nombre\":\"x\"}". Puede pegarla tal cual en código JavaScript, Java o C#. El segundo uso es el contrario: si una línea de log, una respuesta de API o un mensaje de error muestra JSON escapado como "{\"nombre\":\"x\"}", péguelo y elija Desescapar. Se quitan las comillas exteriores, se decodifican los escapes y, si el resultado es JSON válido, vuelve con sangría de 2 espacios. Si la cadena se escapó dos veces (ve \\\"), la herramienta lo detecta y decodifica un nivel más. Para SQL se duplica la comilla simple (O'Brien → 'O''Brien'); para una celda CSV, la comilla doble. Con Java / C#, la ñ y los acentos se escriben como \u00f1, etc., y sobreviven a cualquier codificación del archivo fuente.

Esta herramienta también se busca como escapar json, json escape, json unescape, json a string, string a json, json to string.

¿Qué es Carácter de escape?

Un carácter de escape quita el significado especial al carácter que le sigue; en JSON, JavaScript, Java y C# es la barra invertida (\). Como una cadena va delimitada por comillas dobles, una comilla dentro de ella se escribe \" para que la cadena no termine ahí, y la propia barra invertida pasa a \\. Los caracteres invisibles también se escriben así: \n es un salto de línea, \t un tabulador y \u00f1 el número de la ñ.

¿Qué es Cadena literal?

Una cadena literal es texto escrito entre comillas dentro del código fuente o de un JSON: "Hola". La literal y el texto que lleva no son lo mismo; la literal "pantalla 5\"" lleva el texto pantalla 5". Esta herramienta convierte entre ambas formas: construye una literal a partir de un texto (escapar) o saca el texto de una literal (desescapar), según las reglas del lenguaje que elija.

¿Cuál es la diferencia entre escapar JSON y codificar una URL?

Escapar JSON sirve para poner un texto de forma segura dentro de una cadena literal: solo cambian comillas, barras invertidas y caracteres de control; letras y espacios quedan igual. Codificar una URL sirve para que un texto forme parte de una dirección web: el espacio pasa a %20, la ñ a %C3%B1 y todo lo que no es ASCII simple se codifica con porcentaje. Para meter JSON en un parámetro de URL se necesitan ambas cosas, una tras otra; para incrustarlo en código o en otro campo JSON basta con escaparlo. Base64 es otra cosa distinta.

Qué carácter se convierte en qué

En una cadena JSON o JavaScript, una comilla doble terminaría la cadena, así que se escribe \"; la barra invertida inicia un escape y pasa a \\. Los caracteres invisibles, como salto de línea, tabulador y retorno de carro, no pueden ir tal cual dentro de la cadena y pasan a \n, \t y \r. Los demás caracteres de control se escriben como \u001f. U+2028 y U+2029 también se escapan, porque motores JavaScript antiguos los toman como saltos de línea.

El destino Java / C# usa los mismos escapes y además escribe todo carácter fuera de ASCII como \uXXXX: ñ → \u00f1, á → \u00e1. Así la ñ no se rompe en un archivo .java guardado con otra codificación, y la salida sigue siendo JSON válido. El destino SQL solo duplica la comilla simple; el destino CSV solo duplica la comilla doble y conserva los saltos de línea dentro de la celda.

  • " → \" · \ → \\ · salto de línea → \n · tabulador → \t
  • ñ → \u00f1 (solo con destino Java / C#)
  • O'Brien → 'O''Brien' (SQL)
  • pantalla 5" → "pantalla 5""" (celda CSV)

Trampas: doble escape y la barra invertida de MySQL

Cuando un JSON se guarda como cadena dentro de otro JSON y todo se vuelve a escapar, las comillas quedan como \\\"; pasa mucho en los logs. Al desescapar, la herramienta decodifica un nivel; si el resultado sigue siendo una cadena JSON entre comillas, decodifica otro y le dice cuántos niveles quitó. Luego sangra el JSON válido, salvo que contenga un número que JSON.parse cambiaría (1.0 o un identificador de 17 cifras): en ese caso deja el texto intacto.

El SQL estándar escapa la comilla simple duplicándola, y eso es todo lo que hace la herramienta. MySQL, en su modo por defecto, también trata la barra invertida como escape: una ruta C:\nuevo se convierte en un salto de línea seguido de "uevo". Si usa MySQL y el texto tiene barras invertidas, use una consulta parametrizada. Por la misma razón, escapar lo que escribe un usuario con esta herramienta y pegarlo en una consulta no protege contra la inyección SQL.

Preguntas frecuentes

¿Cómo convierto JSON en una cadena (string)?

Pegue el JSON en el panel izquierdo y deje seleccionados Escapar y JSON / JavaScript. A la derecha aparece una cadena de una línea entre comillas dobles, con \" en las comillas interiores y \n en los saltos de línea. Péguela tal cual en su código o en otro campo JSON.

¿Cómo vuelvo una cadena JSON escapada a JSON normal?

Pegue la cadena escapada (por ejemplo "{\"a\":1}") y elija Desescapar. Se quitan las comillas exteriores, \" vuelve a ser comilla y \n salto de línea. Si el resultado es JSON válido, se muestra con sangría de 2 espacios; una cadena escapada dos veces se detecta y se decodifica un nivel más.

¿Por qué la ñ y los acentos salen como \u00f1?

Con el destino Java / C#, todo carácter fuera de ASCII se escribe como \uXXXX; así sobrevive aunque el archivo fuente se guarde con otra codificación. Si quiere conservar la ñ y los acentos tal cual, elija el destino JSON / JavaScript.

¿El texto que pego se envía a un servidor?

No. Escapar y desescapar ocurren por completo en su navegador; ni siquiera un JSON con claves de API, contraseñas o datos de clientes sale de esta página. Una vez cargada, la página funciona sin conexión.