100 % local — seus dados nunca saem do seu navegador

Texto para string JSON — cole num payload

Transforme texto num literal de string JSON, com aspas. Dois terminadores de linha invisíveis também são escapados: o valor cola num curl ou num fixture.

Instantâneo Privado Zero cookies

Entrada Text

Saída JSON String

O que esta ferramenta faz

Seu texto vira um literal de string JSON: aspas em volta e cada caractere que não pode aparecer cru substituído pelo seu escape.

  • " vira \", uma barra invertida vira \\;
  • uma quebra de linha vira \n, uma tabulação \t, um retorno de carro \r;
  • os demais caracteres de controle viram \u00XX.

é e 😀 ficam como estão. JSON é Unicode, e uma string legível vale mais que um muro de escapes.

Dois caracteres que os codificadores comuns deixam crus

U+2028 (separador de linha) e U+2029 (separador de parágrafo) saem como \u2028 e \u2029. Um codificador JSON padrão os deixa literais.

As duas grafias são JSON válido. A escapada é mais segura, por um motivo histórico e ainda vivo: no JavaScript anterior ao ES2019, esses dois caracteres eram terminadores de linha, então um literal de string contendo um deles cru era um erro de sintaxe. Tudo que pega JSON e o avalia como JavaScript — um eval antigo, um endpoint JSONP, um empacotador que embute um arquivo de dados — esbarra nisso. Escapar custa três caracteres e elimina a classe inteira de falhas.

Uma metade substituta solta não produz saída quebrada

Um texto pode conter metade de um par substituto: uma string cortada no índice errado, um campo truncado vindo de um banco. A saída a escapa como \ud800 em vez de emiti-la crua.

Isso importa porque uma metade substituta crua não pode ser codificada em UTF-8 de jeito nenhum. Escapada, o JSON continua válido, continua UTF-8, e o caractere danificado fica visível na saída em vez de corromper o arquivo que a carrega.

O que não é escapado

A barra. \/ é JSON legal, e alguns codificadores a emitem para que </script> nunca apareça na saída, mas não é exigido e deixa o resultado menos legível.

Se você embute o resultado numa página HTML, trate </script> no nível HTML: um analisador HTML fecha o elemento nessa sequência onde quer que ela apareça, e nenhum escape JSON muda isso.

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.

Perguntas frequentes

Por que é não é escapado como \u00e9?
Porque JSON é um formato Unicode e `é` é um caractere legal dentro de uma string. A codificação do documento o carrega. Escapar todo o não ASCII só é preciso quando o canal é só ASCII — é para isso que existe `ensure_ascii=True` em Python — e fora disso só aumenta a saída e a torna menos legível.
Por que a saída inclui as aspas?
Porque uma string JSON *é* as aspas mais o conteúdo escapado. Entregar só o interior convidaria a colá-lo onde as aspas faltam, que é justamente onde o escape deixa de estar correto. Você pode removê-las se o seu template já as fornece.
Posso colar isso direto numa tag <script>?
Não às cegas. O resultado é JSON válido, e os dois terminadores de linha que quebravam literais JavaScript estão escapados. Mas um analisador HTML continua encerrando o elemento script no primeiro `</script>` do código, dentro de uma string ou não: um texto com essa sequência exige tratamento à parte, no nível HTML.
` do código, dentro de uma string ou não: um texto com essa sequência exige tratamento à parte, no nível HTML."}}]}

Conversores relacionados