Ajuda

Converter objeto JavaScript em JSON estrito

Cole um objeto JavaScript com chaves sem aspas, aspas simples, comentários ou vírgula no final e receba JSON estrito e com escape. Para transformar objeto JavaScript em JSON, um analisador lê o texto e nunca o executa como código, então você pode colar texto de um console, de um arquivo de configuração ou de um exemplo de código.


Como converter objeto JavaScript em JSON

  1. Cole o objeto na caixa Objeto JavaScript ou JSON. Ao colar, a conversão é imediata. Se você digitar, o resultado é atualizado cerca de 300 milissegundos depois que você parar.
  2. Em Formato, escolha como o resultado deve ficar: Minificado (padrão, em uma única linha), 2 espaços ou 4 espaços.
  3. Leia o resultado em JSON estrito. Logo abaixo aparecem “Convertido para JSON estrito.” e a contagem de caracteres.
  4. Selecione Copiar, logo abaixo do resultado. O botão mostra Copiado por um instante.
  5. Selecione Limpar para esvaziar a caixa e começar de novo.

Um exemplo pequeno: você cola {name: 'Ana', tags: ['a', 'b',], id: 0xFF}. Com Minificado, o resultado é {"name":"Ana","tags":["a","b"],"id":255}.

Que sintaxe solta de JavaScript ele aceita

O texto é lido com o analisador JSON5, que entende no que um literal de objeto do JavaScript difere do JSON. Cada uma destas formas é convertida em vez de rejeitada:

Aspas, barras invertidas e quebras de linha dentro de uma string recebem escape automaticamente: 'He said "hi"' chega como "He said \"hi\"". O que já é JSON válido passa sem alterações, exceto pelo formato que você escolheu.

Minificar JSON online ou indentar com 2 ou 4 espaços

O menu Formato fica acima do resultado. Minificado escreve tudo em uma linha, sem espaços, o que serve para o corpo de uma requisição, para dados de teste ou para um valor que você vai colar dentro de uma string.

2 espaços e 4 espaços dão um formato indentado, mais fácil de ler e de comparar. O resultado muda assim que você escolhe, e Copiar leva o que você está vendo.

O que ele não consegue ler e a mensagem de erro

Só dados são aceitos, não código. Quando o analisador para, aparece uma caixa vermelha com o título Não foi possível ler isto, um motivo claro e a posição, por exemplo “Linha 1, coluna 6”. Com {a:1 b:2}, ele para no b e pede que você verifique se logo antes falta uma vírgula, dois-pontos, um colchete ou aspas. Se o texto terminar com um colchete, uma chave ou aspas ainda abertos, a mensagem passa a ser “O texto termina cedo demais.”

Stringify JSON: números, chaves repetidas e outras mudanças

O resultado é produzido pelo próprio JSON.stringify do navegador, então os números são números do JavaScript. Isso tem consequências que vale conhecer antes de copiar:

Se os dados já são JSON válido e você só quer indentar sem mudar nenhum dígito, use o “Formatador de JSON”. Para verificar o JSON contra um esquema, use o “Validador de JSON Schema”.

Limites e privacidade


Perguntas frequentes

Como transformar objeto JavaScript em JSON online?

Cole o objeto na caixa “Objeto JavaScript ou JSON”. Ele é convertido na hora, ao colar, ou cerca de 300 milissegundos depois que você para de digitar, e o JSON estrito aparece em “JSON estrito”. Selecione “Copiar” para levá-lo. Cole só o objeto, não uma linha como const data = {...};.

Como trocar aspas simples por aspas duplas no JSON?

Cole o texto. Cada string com aspas simples sai com aspas duplas, e uma aspa dupla dentro dela recebe escape, então 'He said "hi"' vira "He said \"hi\"". Só strings e chaves são alteradas, de modo que um apóstrofo dentro de uma string com aspas duplas fica como está.

Como tirar a vírgula do final de um JSON?

Cole o texto. Uma vírgula depois do último item de um objeto ou array, como em [1, 2,], é aceita na entrada e fica de fora do resultado em “JSON estrito”. Nada mais nos dados muda.

O JSON pode ter chaves sem aspas ou comentários?

O JSON estrito não pode: toda chave e toda string precisam de aspas duplas, e não existe sintaxe de comentário. Objetos JavaScript e arquivos de configuração costumam ter as duas coisas. Esta ferramenta lê esses casos, escreve as chaves com aspas duplas e descarta os comentários, então o resultado é um JSON válido.

JSON5 para JSON: qual é a diferença entre JSON e JSON5?

JSON5 é um superconjunto mais flexível do JSON, que permite chaves sem aspas, strings com aspas simples, vírgulas no final, comentários, números hexadecimais e mais algumas formas ao estilo do JavaScript. Esta ferramenta lê essa sintaxe e escreve JSON comum, então um documento JSON5 sem valores não suportados vira um JSON que qualquer analisador aceita.

Como minificar JSON ou indentar com 2 ou 4 espaços?

Use o menu “Formato” acima do resultado. “Minificado”, o padrão, dá uma linha sem espaços. 2 espaços e 4 espaços dão uma versão indentada. O resultado e o que “Copiar” leva mudam assim que você escolhe outra opção.

Por que aparece “Não foi possível ler isto”?

O texto não é um objeto, um array ou um valor que o analisador entende. A caixa vermelha indica onde ele parou, por exemplo “Linha 1, coluna 6”, e o que verificar: uma vírgula, dois-pontos, colchete ou aspas que faltam logo antes, ou um colchete, uma chave ou aspas que continuam abertos no final. Instruções como const x = {...}, um ponto e vírgula final, strings com crases, undefined, funções e new Date() não são aceitas. Cole só o objeto.

O JavaScript que eu colo é executado?

Não. O texto é lido por um analisador (JSON5), nunca por eval, então nada do que você colar pode rodar. É por isso também que código é rejeitado: uma função, o nome de uma variável ou new Date() é um erro, não algo para avaliar.

Como fazer escape de JSON online com aspas e quebras de linha?

Você não precisa fazer nada. Uma aspa, uma barra invertida ou uma quebra de linha dentro de uma string aparece como \", \\ ou \n no resultado. A ferramenta não coloca o JSON inteiro dentro de uma única string com escape para embutir em outra string; ela entrega o próprio JSON.

É a mesma coisa que JSON.stringify? Por que meu número grande mudou?

O resultado é feito com JSON.stringify, então as regras de saída são as mesmas. A diferença está na entrada: JSON.stringify precisa de um objeto real no seu código, enquanto aqui você cola o texto do objeto, inclusive com sintaxe solta. Os números viram números do JavaScript, exatos só até 9007199254740991, por isso 12345678901234567890 sai como 12345678901234567000 e 1.0 como 1. NaN, Infinity e -Infinity viram null, e, se uma chave aparece duas vezes, vale o último valor. O limite é de 5.000.000 de caracteres, e a conversão acontece no seu dispositivo, sem enviar nem salvar nada.