Pular para o conteúdo principal

Transformar JSON em string

Esta ferramenta transforma um documento JSON em um literal de string JSON — a forma escapada e entre aspas de que você precisa para embutir uma carga dentro de outra. Ele escapa aspas, barras invertidas e caracteres de controle em uma única passada, então o escape duplo que um buscar-e-substituir em sequência produz não pode acontecer.

Só local
Documento JSON
0 B1 linhaLin. 1, Col. 1
String literal escapadasomente leitura
0 B1 linha

Como funciona o Transformar JSON em string?

Esta é a operação por trás de uma tarefa recorrente e nada glamourosa: pôr uma carga dentro de outra. Um corpo de requisição dentro de uma definição de webhook. Uma fixture dentro de um arquivo de teste. Um documento de configuração dentro de um valor de Kubernetes ConfigMap. Uma resposta de exemplo dentro de um campo example do OpenAPI. Em cada caso, o documento interno precisa se tornar uma string no externo, o que significa que toda aspa, barra invertida e quebra de linha dentro dele precisa ser escapada.

As pessoas fazem isso à mão com buscar-e-substituir, e o erro acontece de um jeito específico e previsível. Se você substitui as aspas primeiro e as barras invertidas depois, a barra invertida que acabou de introduzir na frente de cada aspa é escapada uma segunda vez: você queria \" e tem \\", o que analisa como uma barra invertida literal seguida do fim da string. O documento parece funcionar até algo dentro dele conter uma aspa.

Escapar em uma única varredura de caracteres torna isso impossível. Cada caractere é examinado uma vez e mapeado uma vez — " para \", \ para \\, quebra de linha para \n, tabulação para \t — sem nenhuma chance de uma passada posterior reprocessar a saída de uma passada anterior.

A RFC 8259 exige que todo caractere de controle abaixo de U+0020 seja escapado, então qualquer coisa sem uma forma abreviada se torna uma sequência \u. Caracteres não ASCII ficam intactos por padrão, porque o JSON moderno é UTF-8 e escapá-los só deixa o resultado maior e menos legível. Quando um destino realmente precisa de ASCII puro — um pipeline de logs antigo, um sistema que corrompe bytes altos — a opção os escapa, e emite corretamente um par surrogate para qualquer coisa fora do Basic Multilingual Plane, já que um único \u não consegue representar um emoji e emitir apenas um o trunca.

Por padrão, a entrada é validada como JSON primeiro. Escapar algo quebrado produz um literal de string que em si é válido, mas cujo conteúdo vai falhar na análise mais tarde, em um lugar bem menos conveniente. Desligue isso para escapar texto arbitrário, o que é útil para linhas de log e trechos de shell.

Documento

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

Literal de string

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

Quais opções e casos-limite o Transformar JSON em string suporta?

Referência técnica e opções
ParâmetroTipoPadrãoComportamento e casos-limite
Envoltório em aspasbooleanotrueEmite as aspas duplas ao redor para que o resultado seja uma string JSON completa. Desative isso quando você estiver colando em um par de aspas existente.
Escape de não-ASCIIbooleanofalseConverte cada codepoint acima de U+007F para \uXXXX. Não é necessário para destinos UTF-8 e aumenta o tamanho do resultado. Caracteres astrais emitem corretamente um par de substitutos em vez de um escape truncado.
Escape de barrasbooleanofalseEscreve / como \/. JSON válido, exigido por alguns sistemas de envio de logs e por JSON embutido em blocos HTML <script>, onde </script> encerraria prematuramente o elemento.
Exigir JSON válidobooleanotrueValida antes de aplicar o escape, garantindo que o literal possa ser interpretado de volta no documento original. Desativado, ele escapa qualquer texto — útil para linhas de log e trechos de shell.
Caracteres de controlesempre escapado—A RFC 8259 proíbe caracteres crus abaixo de U+0020 em uma string. \n \r \t \b \f usam suas formas abreviadas; o restante se torna \u00XX.
Crescimento de tamanho≈ 5–30%—Depende inteiramente de quantas aspas e barras invertidas a entrada contém. Um documento JSON, que é composto principalmente por aspas, cresce mais que um texto corrido.

Perguntas frequentes

Qual a diferença entre isto e o JSON.stringify do JavaScript?

O JSON.stringify recebe um valor JavaScript e produz texto JSON. Este recebe texto JSON e produz um literal de string JSON contendo ele — que é o que JSON.stringify(someJsonText) faz quando você passa uma string. A distinção importa: serializar um objeto dá {"a":1}, enquanto serializar o texto {"a":1} dá "{\"a\":1}". Esta ferramenta faz o segundo.

Por que meu JSON escapado à mão quebrou?

Quase sempre é um erro de ordem. Substituir aspas antes das barras invertidas faz escape duplo da barra invertida que cada substituição acabou de introduzir, então \" se torna \\" e a string termina mais cedo. Funciona até o documento conter uma aspa — o que, para JSON, é imediatamente. Varrer cada caractere exatamente uma vez, como esta ferramenta faz, elimina a possibilidade.

Como reverter o processo?

Use a ferramenta Recuperar JSON escapado, que recebe o literal e devolve o documento. Ele é tolerante de propósito: lida com um fragmento que perdeu as aspas em volta, que é o estado usual de qualquer coisa copiada de uma linha de log ou de um stack trace.

Devo escapar barras normais?

Geralmente não. O JSON permite \/ mas nenhum parser exige isso. Os dois casos em que importa: JSON embutido diretamente em um bloco <script> HTML, onde um </script> literal dentro de uma string encerraria o elemento mais cedo, e uma meia dúzia de coletores de log que esperam a forma escapada.

Minha carga é enviada a algum lugar?

Não. O escape acontece nesta aba do navegador. Os documentos que as pessoas embutem em outros documentos costumam ser fixtures, corpos de API e configuração — exatamente o material que não deveria atravessar um servidor desconhecido para ter as aspas alteradas.

Por que minha string escapada quebra quando eu colo em um comando de shell?

Porque há duas camadas de aspas em jogo e apenas uma delas é a do JSON. Esta ferramenta produz um literal de string JSON válido; o shell então aplica as próprias regras ao que você colar, e uma aspa dupla que o JSON escreveu como \" continua sendo uma aspa dupla para o bash. Envolva o valor inteiro em aspas simples, ou escreva-o em um arquivo e passe o caminho do arquivo.