Qué significa desescapar (unstringify)
Cuando un JSON se guarda dentro de una cadena, cada comilla doble se escribe como \", cada salto de línea como \n y cada barra invertida como \\. Lo ves en archivos de log, colas de mensajes, cargas de webhooks, las herramientas para desarrolladores del navegador y columnas de bases de datos que guardan JSON como texto. Es válido, pero cuesta leerlo:
"{\"name\":\"Ada\",\"tags\":[\"admin\",\"dev\"]}"
Hacer JSON unstringify, o desescapar, deshace esos escapes y te devuelve el valor original. Si ese valor es JSON, esta herramienta además le da formato para que puedas leerlo.
Cómo usarlo
- Pega la cadena escapada en el cuadro de la izquierda, pulsa Abrir archivo o pulsa Ejemplo.
- El resultado aparece a la derecha mientras escribes.
- Ajusta las opciones:
- Desescapar cadenas anidadas sigue trabajando cuando el resultado es a su vez otra cadena escapada. Viene activado.
- Si el resultado es JSON te deja elegir una sangría de 2 o 4 espacios, o Dejar como está.
- Pulsa Copiar, o Descargar para guardar el resultado como archivo de texto.
La línea bajo los cuadros indica si el resultado es JSON válido y cuántas capas se desescaparon.
Ejemplos
La cadena de arriba, con Si el resultado es JSON en 2 espacios, queda así:
{
"name": "Ada",
"tags": [
"admin",
"dev"
]
}
También funciona con texto escapado sin comillas exteriores. Esta entrada:
Line one\nLine two\t(tabbed)
da dos líneas, con una tabulación real antes de (tabbed):
Line one
Line two (tabbed)
Los escapes Unicode se decodifican. "Café 東京" se convierte en Café 東京. Esto es útil con textos en español que otro programa escapó como ASCII, por ejemplo con json.dumps de Python: "Caf\u00e9 \u00bfQu\u00e9?" da Café ¿Qué?, con las tildes y el signo de apertura en su sitio.
Cadenas codificadas dos veces
A veces los datos pasan por stringify dos veces. Las barras invertidas se acumulan:
"\"{\\\"event\\\":\\\"signup\\\",\\\"user\\\":7}\""
Con Desescapar cadenas anidadas activado, la herramienta desescapa las dos capas e informa “Se desescaparon 2 capas.” Con Dejar como está seleccionado, el resultado es:
{"event":"signup","user":7}
Con Desescapar cadenas anidadas desactivado, se detiene tras una capa y ves la cadena interior, todavía escapada:
"{\"event\":\"signup\",\"user\":7}"
Eso sirve cuando quieres ver exactamente qué contenía cada capa.
Mensajes de error
Si la entrada no es una cadena JSON válida, recibes la línea y la columna del problema. Ejemplos reales:
| Entrada | Mensaje |
|---|---|
"bad \q escape" |
Línea 1, columna 6: Secuencia de escape no válida \q |
He said "hi" |
Línea 1, columna 9: Hay una comilla doble que no está escapada como \" |
"unterminated |
Línea 1, columna 1: Cadena sin cerrar: falta la comilla doble de cierre |
JSON solo admite estos escapes: \", \\, \/, \b, \f, \n, \r, \t y \u seguido de cuatro dígitos hexadecimales. Los escapes de otros lenguajes, como \x41 o \', no son JSON válido. Pulsa Mostrar en la entrada para ir al problema.
Cómo funciona
La herramienta lee tu entrada como un literal de cadena JSON y añade las comillas exteriores si faltan. Decodifica los escapes según las reglas de JSON. Si el resultado empieza por una comilla doble, es a su vez una cadena JSON válida y Desescapar cadenas anidadas está activado, decodifica otra vez. Por último, si el resultado es un objeto o un array JSON, le da formato con la sangría que elegiste. Los números se conservan exactamente como estaban escritos. Todo ocurre en tu navegador.
Consejos
- Si el resultado no es JSON válido, se muestra como texto normal, que es lo correcto para cadenas que nunca fueron JSON.
- Copia el valor directamente de la línea de log, comillas incluidas, para no perder ningún carácter en los extremos.
- Si ves caracteres
\rsueltos en el resultado, el texto original tenía finales de línea de Windows.
Otras formas de hacerlo
JavaScript. JSON.parse(str) decodifica una capa. Vuelve a llamarlo sobre el resultado si el valor está codificado dos veces, y después usa JSON.stringify(value, null, 2) para darle formato.
Python. json.loads(s) decodifica una cadena JSON. Para una cadena codificada dos veces, llámalo dos veces.
jq. jq -r . file.json imprime una cadena JSON como texto sin procesar, y jq 'fromjson' analiza una cadena que contiene JSON.
Herramientas relacionadas
Para hacer el camino inverso y escapar texto como cadena JSON, usa JSON Stringify. Para validar o volver a formatear el resultado, usa el formateador JSON. Para convertirlo en YAML, usa el convertidor de JSON a YAML.