UltKit

Formatador e validador de JSON

Cole o JSON para formatá-lo com indentação, minificá-lo ou ordenar as chaves. Se ele não for válido, o formatador mostra a linha e a coluna em que o parser parou, com um marcador embaixo do problema, então uma vírgula faltando em uma resposta de 3.000 linhas leva segundos para ser encontrada.

Saída

0 caracteres · 0 palavras · 0 linhas

0 caracteres · 0 palavras · 0 linhas

Funciona inteiramente nesta aba do navegador. Seu texto nunca é enviado nem armazenado.

Tipos de valor JSON

A RFC 8259 permite exatamente estes valores. Objetos e arrays se aninham; todo o resto é folha.

TipoExemploRegra
Objeto{"id": 7, "tags": ["a"]}As chaves devem ser strings entre aspas duplas; os membros são separados por vírgulas, sem vírgula no final.
Array[1, "two", null]Lista ordenada de valores quaisquer; tipos misturados são permitidos.
String"caf\u00e9 \"quoted\""Só aspas duplas; caracteres de controle precisam de escape; escapes \u usam quatro dígitos hexadecimais.
Número-12.5e3Só decimal: sinal de menos opcional, sem zeros à esquerda, fração e expoente opcionais. Sem NaN nem Infinity.
true, false e nulltrueEm minúsculas, sem aspas.

O que o parser rejeita

Cada entrada abaixo foi passada ao mesmo JSON.parse que o formatador usa, quando esta página foi gerada.

EntradaProblemaJSON.parse
{"a": 1,}Vírgula no finalRejeitado
{'a': 1}Strings entre aspas simplesRejeitado
{"a": 1 /* note */}ComentáriosRejeitado
{a: 1}Chave sem aspasRejeitado
{"n": NaN}NaN não é um número JSONRejeitado
{"n": 012}Zero à esquerdaRejeitado
{"n": 0x1F}Número hexadecimalRejeitado

Escapes em strings JSON

CaractereEscrito em JSON
Aspas duplas"\""
Barra invertida"\\"
Quebra de linha (LF)"\n"
Tabulação"\t"
Retorno de carro"\r"
Caractere de controle U+0001"\u0001"
Barra (escape opcional)"/"
Letra não ASCII (não precisa de escape)"é"

As regras de um documento JSON válido

O JSON é especificado pela RFC 8259 (idêntica em essência à ECMA-404). Um documento é um único valor: um objeto, um array, uma string, um número, true, false ou null. As chaves de objeto são sempre strings entre aspas duplas. As strings usam somente aspas duplas e precisam escapar a aspa, a barra invertida e todo caractere de controle abaixo de U+0020; por isso, tabulações e quebras de linha dentro de uma string são escritas como \t e \n. A RFC 8259 também exige UTF-8 para JSON trocado entre sistemas.

Os números são decimais: sem zeros à esquerda, sem hexadecimal, sem NaN nem Infinity e sem sinal de mais na frente. O formato não tem comentários nem vírgulas finais. Essas duas últimas regras causam a maioria dos erros no dia a dia, porque literais de objeto do JavaScript, JSON5 e muitos arquivos de configuração permitem ambos. A tabela de referência abaixo foi gerada alimentando cada erro comum no mesmo parser que o formatador usa.

Formatar, minificar, ordenar

Formatar (pretty-print) adiciona quebras de linha e indentação para deixar a estrutura legível; dois espaços é o estilo mais comum em projetos JavaScript, quatro espaços é a escolha usual com json.dumps(indent=4) do Python, e tabulações permitem que cada pessoa escolha a largura. Minificar remove todos os espaços desnecessários, o que reduz o tamanho das respostas de API e faz o documento caber em uma linha para logs ou variáveis de ambiente.

Ordenar chaves coloca em ordem alfabética os membros de cada objeto, de forma recursiva. Objetos JSON não têm ordem por definição, então ordenar não muda o significado, mas facilita muito comparar dois documentos de sistemas diferentes. Lembre-se de que a leitura converte números em doubles do JavaScript: inteiros acima de 2^53 (9.007.199.254.740.992), como alguns IDs de banco de dados, perdem precisão ao serem reformatados, então mantenha-os como strings.

De JSON para outros formatos

Um documento formatado é mais fácil de ler, mas às vezes você precisa dele em outro formato. Um array de objetos vira uma planilha com JSON para CSV, e o conversor de dados move arquivos inteiros entre JSON, XML, YAML e CSV.

Perguntas frequentes

Por que o formatador recusa meu JSON com comentários?
O JSON padrão não tem sintaxe de comentário; a RFC 8259 a deixa de fora de propósito. Remova os comentários ou mantenha o arquivo como JSONC ou JSON5, se a ferramenta que o lê aceitar esses formatos.
O que significa "Unexpected token" em um erro de JSON?
O parser encontrou um caractere que não pode aparecer naquela posição, como uma aspa simples, uma vírgula final antes de } ou uma chave sem aspas. A linha e a coluna exibidas apontam para esse caractere.
Ordenar as chaves altera meus dados?
Não. A ordem dos membros de um objeto não tem significado em JSON, então o documento ordenado é equivalente. A ordem dos arrays é significativa e nunca é alterada.
Por que um número longo mudou depois da formatação?
O JavaScript armazena números como floats de 64 bits, que representam inteiros com exatidão apenas até 2^53. IDs maiores são arredondados na leitura; transmita-os como strings para manter todos os dígitos.
Posso formatar um arquivo JSON em vez de colar o conteúdo?
Abra o arquivo em qualquer editor de texto, selecione tudo e cole aqui. Arquivos muito grandes, de dezenas de megabytes, podem deixar a aba lenta enquanto a caixa de texto os renderiza.