Qué hace esta herramienta
Un literal de cadena JSON se convierte en el texto que representa. "caf\u00e9" da café, "dos\nlíneas" da dos líneas, y "\ud83d\ude00" da el emoji: un par suplente es un carácter, no dos mitades rotas.
Las comillas son opcionales
Las dos formas funcionan:
"caf\u00e9"
caf\u00e9
Es deliberado. Una cadena JSON rara vez llega con sus comillas intactas: la copias de una línea de log, de un git diff, de una traza, de un mensaje de error que citó solo el interior. Exigir las comillas significaría volver a ponerlas a mano cada vez.
El precio es pequeño y se dice claro: una entrada desnuda que resulta ser JSON válido de otro tipo — [1,2], null — se lee como texto, porque eso es lo que significa aquí un fragmento desnudo. Solo una entrada entrecomillada se analiza como literal.
Un rechazo dice qué y dónde
Una entrada que no es una cadena JSON se rechaza en vez de decodificarse a medias, y el mensaje nombra la causa:
| Entrada | Mensaje |
|---|---|
a"b | Unescaped quotation mark at position 1: write it as \" |
"ab\q" | Unknown escape "\q" at position 3 |
"a\u12" | Invalid \u escape at position 2: four hexadecimal digits expected |
"abc | The opening quotation mark has no closing quotation mark |
{"a":1} | Expected a JSON string, found a JSON object |
Las posiciones cuentan desde cero y se refieren al texto que pegaste, así que el número te lleva al carácter.
Vale la pena decirlo porque antes no era así: cada uno de esos casos producía el único mensaje Invalid JSON string escape sequence. Un objeto pegado no es un fallo de escape, y que te digan lo contrario te manda a buscar al sitio equivocado. Era un defecto real de esta herramienta, encontrado al escribir esta página y corregido.
No se adivina nada
Un escape desconocido es un error, no un carácter. \q no es JSON válido, y decidir que «probablemente quería decir q» te devolvería un texto sutilmente distinto del que tenía la fuente: la clase de diferencia que aparece tres sistemas más allá.
Privado por diseño
Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.