Saltar al contenido principal

Desescapar JSON

Desescapar JSON deshace el escapado de cadenas: convierte \" de nuevo en una comilla, \n en un salto de línea y \uXXXX en su carácter, recuperando el documento que iba incrustado dentro de otro. Es deliberadamente tolerante con los fragmentos copiados de líneas de log, que suelen llegar sin sus comillas exteriores.

Solo local
Cadena escapada
0 B1 líneaLín. 1, Col. 1
Documento recuperadosolo lectura
0 B1 línea

¿Cómo funciona Desescapar JSON?

Casi siempre llegas a esta herramienta desde un archivo de log. Algo registró un cuerpo de petición metiendo el documento JSON entero en un solo campo de cadena, y lo que tienes delante es una línea densa de \" donde deberían ir las comillas, con \n en lugar de saltos de línea y \\ dondequiera que apareció una ruta de Windows. Es técnicamente legible y en la práctica no lo es.

Desescapar es lo inverso de escapar y, mecánicamente, es simple: recorre el texto y cada vez que aparece una barra invertida, consume el carácter siguiente y emite lo que el par representa. El criterio está por completo en cómo tratar una entrada imperfecta, y casi siempre lo es.

Un parser JSON estricto rechazaría la mayoría de lo que la gente pega aquí. El fragmento suele haber perdido sus comillas exteriores por un copiar y pegar que seleccionó solo la parte interesante. Puede venir truncado por el límite de longitud de un campo de log. Puede contener una barra invertida que no sea un escape JSON válido, porque lo que lo produjo escapaba para otro destino. Un parser que rechaza todo esto es correcto e inútil.

Por eso esta herramienta es tolerante a propósito. Que falten las comillas exteriores está bien y se avisa en lugar de exigirlas. Un escape desconocido como \q conserva ambos caracteres y genera un aviso. Una barra invertida final se conserva. Una secuencia \u incompleta se deja tal cual. En todos los casos el resto del documento se recupera igualmente, porque un payload recuperado a medias sirve mucho más que un mensaje de error.

Unicode recibe un tratamiento adecuado. Un escape \uXXXX se convierte en su carácter, y un sustituto alto seguido de uno bajo se recompone en el único carácter que codifican en conjunto — sin ese paso, cada emoji y cada glifo CJK menos frecuente saldría como dos cajas de reemplazo.

Una vez desescapado, el resultado se comprueba: si es JSON válido se le da formato, que es casi siempre lo que de verdad querías. Si no lo es, se muestra como texto plano junto al error de parseo, para que puedas ver si el documento se truncó en el log o ya llegó roto.

Cadena escapada

"{\"name\":\"Ada\",\"note\":\"line one\nline two\"}"

Documento recuperado

{
  "name": "Ada",
  "note": "line one
line two"
}

¿Qué opciones y casos límite admite Desescapar JSON?

Referencia técnica y opciones
ParámetroTipoValor predeterminadoComportamiento y casos límite
\" \\ \/escape—Comillas invertidas, barra invertida y barra inclinada. La escape de la barra es legal pero opcional en JSON, por lo que aparece en la salida de algunos productores y no en otros.
\n \r \t \b \fescape—Los caracteres de control con nombre. \n es el que marca la diferencia entre un bloque de texto y un documento legible.
\uXXXXescape—Una unidad de código UTF-16. Un sustituto alto seguido de uno bajo se recombina en el solo carácter que codifica; sin eso, cada emoji y muchos caracteres CJK vuelven como dos cajas rotas.
Comillas circundantesopcionalse eliminan si están presentesUn fragmento pegado fuera de una línea de registro suele haberlas perdido. Se informa si estaban ahí, en lugar de requerirlo.
Escape desconocidose conserva + advertencia—\q y similares conservan ambos caracteres. Un analizador estricto rechaza todo el documento; continuar permite recuperar el resto, que es por lo que viniste.
Sustituto solitariose conserva + advertencia—Un sustituto alto sin la mitad baja no puede formar un carácter. Se conserva y se marca, ya que generalmente significa que la fuente se truncó a mitad de carácter.
Dar formatobooleanotrueVuelve a sangrar cuando el texto recuperado es JSON válido. Cuando no lo es, se muestra el texto crudo con el error de análisis, lo que distingue un campo de registro truncado de un documento que ya estaba roto.

Preguntas frecuentes

Mi línea de log está doblemente escapada. ¿La paso dos veces por aquí?

Sí. El doble escapado ocurre cuando una cadena ya escapada se escapa de nuevo — un payload registrado como cadena y esa línea de log registrada como cadena por un agregador. Verás \\\" donde debería haber \". Pasa la salida otra vez por la herramienta y sale la segunda capa. Si tras una pasada se ve igual, ya llegaste al fondo.

¿Por qué el resultado sigue sin ser JSON válido?

Normalmente, truncamiento. Los campos de log tienen límites de longitud, así que el documento suele cortarse a mitad de cadena o de objeto, y desescaparlo fielmente produce algo que no se puede parsear porque de verdad está incompleto. El error de parseo indica la línea y la columna donde se detiene, que normalmente cae justo en el punto de truncamiento.

¿Qué pasó con mis emojis?

Si sobrevivieron, el par sustituto se recompuso correctamente. Si una herramienta muestra dos cajas, decodificó cada mitad \uXXXX por separado — los caracteres fuera del Plano Multilingüe Básico se codifican como dos unidades de código y deben unirse. Esta herramienta los une, y avisa cuando encuentra una mitad suelta, lo que indica truncamiento.

¿Puedo pegar texto que no sea JSON?

Sí. El desescapado es textual, así que una sentencia SQL escapada, un fragmento HTML escapado o un comando de shell escapado se desescapan sin problema. Simplemente informará de que el resultado no es JSON válido y lo mostrará como texto plano en lugar de darle formato.

¿La línea de log que pego se envía a algún sitio?

No. El desescapado se ejecuta en tu navegador. Aquí importa más que en la mayoría de las herramientas: las líneas de log que la gente desescapa suelen ser cuerpos de petición de producción con tokens, identificadores de sesión y registros de clientes, y pegar una en una herramienta del lado del servidor la copia a un segundo access log.

¿El desescapado cambia los caracteres o solo cómo se escriben?

Solo cómo se escriben. \u00e9 y é son dos grafías del mismo carácter, y el desescapado reescribe la grafía — lo que sale es exactamente el texto que codificaba la forma escapada. Por eso la salida a veces se ve idéntica a la entrada: una línea de log sin nada escapado no tiene nada que cambiar.