Por que strings JSON precisam de escape
Uma string JSON fica entre aspas duplas, então uma " dentro dela precisa ser escrita \", uma barra invertida \\, e quebras de linha e tabs \n e \t. Caracteres de controle abaixo de U+0020 não podem aparecer crus. Colar uma consulta SQL de várias linhas, um caminho do Windows ou um HTML com atributos num arquivo de configuração ou payload de API quebra o JSON se esses caracteres não forem escapados.
Desescapar faz o contrário: transforma uma string copiada de um log ou de uma resposta de API, cheia de \n e \u00e7, no texto que ela representa.
Exemplo resolvido
O texto
C:\Usuarios\ana
Ela disse "oi"
vira C:\\Usuarios\\ana\nEla disse \"oi\". Entre aspas, isso é uma string JSON válida, e o JSON.parse devolve as duas linhas originais.
Como funciona
O escape segue a RFC 8259 §7 passando o texto pelo JSON.stringify: aspas e barras invertidas ganham uma barra, quebra de linha, retorno de carro, tab, backspace e form feed usam seus escapes curtos, outros caracteres de controle viram \u00XX e todo o resto, inclusive acentos e emoji, fica como está. As aspas em volta são opcionais. Desescapar lê a entrada como uma string JSON, então sequências \u, inclusive pares substitutos de emoji, são decodificadas. Tudo roda nesta aba.
Perguntas frequentes
Quais caracteres precisam de escape em JSON?
As aspas duplas, a barra invertida e os caracteres de controle U+0000–U+001F. O resto pode aparecer como está em UTF-8.
Preciso escapar a barra normal?
Não. \/ é permitido mas opcional; só ajuda quando o JSON vai dentro de uma tag <script> no HTML.
Por que \\x41 é recusado?
JSON não tem o escape \x. Use \u0041.
Preciso escapar aspas simples?
Não. Strings JSON usam só aspas duplas, então ' não precisa de escape, e \' é inválido.
Fontes
- RFC 8259 — The JavaScript Object Notation (JSON) Data Interchange Format
- ECMA-262 — ECMAScript Language Specification
- Wikipedia — JSON
Revisado em 17 de out. de 2026 · vetores de teste fixtures/dev/json-escape/