O que esta ferramenta faz
Um literal de string JSON vira o texto que representa. "caf\u00e9" dá café, "duas\nlinhas" dá duas linhas, e "\ud83d\ude00" dá o emoji — um par substituto é um caractere, não duas metades quebradas.
As aspas são opcionais
As duas formas funcionam:
"caf\u00e9"
caf\u00e9
É deliberado. Uma string JSON raramente chega com as aspas intactas: você a copia de uma linha de log, de um git diff, de um stack trace, de uma mensagem de erro que citou só o interior. Exigir as aspas significaria recolocá-las à mão toda vez.
O preço é pequeno e dito com clareza: uma entrada nua que por acaso é JSON válido de outro tipo — [1,2], null — é lida como texto, porque é isso que um fragmento nu significa aqui. Só uma entrada entre aspas é analisada como literal.
Uma recusa diz o quê e onde
Uma entrada que não é uma string JSON é recusada em vez de decodificada pela metade, e a mensagem nomeia a causa:
| Entrada | Mensagem |
|---|---|
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 |
As posições contam de zero e se referem ao texto que você colou, então o número leva você ao caractere.
Vale dizer porque antes não era assim: cada um desses casos produzia a mensagem única Invalid JSON string escape sequence. Um objeto colado não é um erro de escape, e ouvir o contrário manda você procurar no lugar errado. Era um defeito real desta ferramenta, encontrado ao escrever esta página e corrigido.
Nada é adivinhado
Um escape desconhecido é um erro, não um caractere. \q não é JSON válido, e decidir que ele “provavelmente queria dizer q” devolveria um texto sutilmente diferente do que a fonte continha — o tipo de diferença que aparece três sistemas adiante.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.