Ferramenta de Formatação JSON
O que é Formatador JSON?
O formatador JSON torna JSON compacto ou bagunçado legível ao adicionar indentação, quebras de linha e estrutura visível. JSON aparece em respostas de API, configurações, logs, feature flags, dados de teste e integrações no-code, onde uma vírgula ausente, aspas incorretas ou valor aninhado inesperado pode causar erro de parsing. A ferramenta ajuda a inspecionar objetos, arrays, chaves, valores e possíveis pontos de erro rapidamente, e também pode compactar novamente quando uma carga menor é necessária. Formatação não muda o significado dos dados nem valida automaticamente um schema de negócio. Em APIs reais, tipos, campos obrigatórios, null e contratos de versão precisam de revisão separada.
Como Usar
Como usar
- Cole ou insira dados JSON na caixa de entrada à esquerda
- Selecione o tamanho da indentação (2 espaços, 4 espaços ou Tab)
- Clique em Format para embelezar ou em Minify para remover espaços em branco
- Os resultados aparecem automaticamente à direita, com destaque de sintaxe
- Clique em Copy ou Download para salvar o resultado
Observações sobre Validação de JSON
- A formatação comprova que o texto é um JSON válido, mas não garante que os dados correspondam ao schema do seu negócio.
- Quando aparecerem erros, verifique a linha e a coluna indicadas em busca de aspas simples, vírgulas finais, comentários ou caracteres de controle sem escape.
Casos de uso
Princípio técnico
JSON (JavaScript Object Notation) é definido pela RFC 8259 / ECMA-404. A gramática é um subconjunto estrito de literais de objetos JavaScript: strings devem ser envolvidas em aspas duplas, chaves devem ser citadas, vírgulas finais são ilegais e comentários são proibidos. Um formatador analisa o documento com `JSON.parse()` no grafo de objetos da linguagem hospedeira, depois serializa novamente via `JSON.stringify(value, replacer, indent)` onde indent é um número (1-10 espaços) ou uma string (`'\t'`). A análise é O(n) e geralmente é mais rápida que a fase de stringify porque a construção da saída aloca novas strings. O tratamento de números segue a precisão dupla IEEE 754: inteiros maiores que `Number.MAX_SAFE_INTEGER` (2^53 - 1 = 9007199254740991) perdem precisão, então `9007199254740993` se transforma em `9007199254740992`. Decimais repetidos como `0.1 + 0.2` resultam em `0.30000000000000004` após a análise. Strings Unicode permitem escapes `\uXXXX` incluindo surrogate pairs (`\uD83D\uDE00` → 😀); o parser rejeita surrogates solitários não pareados. Espaços em branco são significativos apenas dentro de strings — qualquer combinação de espaço, tab, LF, CR entre tokens é analisada de forma idêntica. Relaxamentos não padrão comuns incluem JSON5 (comentários, vírgulas finais, chaves sem aspas) e JSONC (configuração do VS Code). JSON padrão não os permite e `JSON.parse` lança `SyntaxError` ao encontrá-los. Alternativas de streaming como NDJSON (um objeto por linha) e JSON Lines evitam carregar documentos inteiros na memória. Para entrada profundamente aninhada, o limite de pilha do V8 (~10.000 frames) limita parsers baseados em recursão; parsers de produção usam máquinas de estado iterativas para elevar o limite.
- Gramática RFC 8259 / ECMA-404 — seis tipos de valor (objeto, array, string, número, true/false, null); strings com aspas duplas; chaves devem ser citadas; sem vírgulas finais; sem comentários.
- `JSON.parse(text)` roda em O(n) e lança `SyntaxError` com offset de caractere em entrada inválida; `JSON.stringify(value, replacer, indent)` produz saída formatada com indentação de 2-10 espaços ou `'\t'`.
- Precisão numérica IEEE 754: `Number.MAX_SAFE_INTEGER = 2^53 - 1`; inteiros além disso arredondam para o double representável mais próximo, então IDs de chat e IDs Snowflake do Twitter devem ser transportados como strings.
- Escapes Unicode `\uXXXX` suportam todo o BMP; caracteres fora do BMP exigem encoding de surrogate pair `\uD83D\uDE00`; o parser rejeita surrogates solitários não pareados conforme RFC 8259 §8.2.
- Falhas de análise comuns: strings com aspas simples (`'foo'`), vírgula final após o último item de array/objeto, caracteres de controle sem escape dentro de strings, barra invertida sem escape, `}`/`]` de fechamento ausente, BOM (`\uFEFF`) no início.
- Referências circulares lançam `TypeError: cyclic object value` em `JSON.stringify`; use um callback `replacer` com WeakSet para quebrar ciclos, ou bibliotecas como `flatted` / `json-stringify-safe`.
- Variantes não padrão: JSON5 (`.json5`, permite comentários e vírgulas finais), JSONC (configuração VS Code), NDJSON / JSON Lines (um objeto por linha, amigável para streaming) — todos rejeitados pelo `JSON.parse` estrito.
Exemplos
Exemplo de objeto
Entrada:
{
"name": "ToolAct",
"type": "web tool",
"active": true
}
Saída: formatado com indentação de 2 espaços e ordem de chaves estávelExemplo de array
Entrada: [1,2,3,"a","b","c"]
Saída: formatado com indentação de 2 espaços; números permanecem numéricos, strings mantêm aspasEstrutura aninhada
Entrada:
{"user":{"name":"Alex","skills":["JavaScript","Python"]}}
Saída:
{
"user": {
"name": "Alex",
"skills": [
"JavaScript",
"Python"
]
}
}
Observação: objetos e arrays aninhados são indentados recursivamente; escolha a largura da indentação na barra de ferramentasPerguntas frequentes
O que o formatador faz?
Reformata JSON: pretty-print com a indentação escolhida (2 ou 4 espaços) ou minifica em uma única linha. Valida durante o parse, então erros de sintaxe são reportados com linha e coluna.
Por que meu JSON foi rejeitado como inválido?
Causas comuns: vírgulas finais (válidas em JS, ilegais em JSON), strings com aspas simples (devem ser duplas), chaves sem aspas, comentários (// ou /* */) ou colchetes/chaves faltando. A página informa a localização da falha de parse. JSON5 e JSONC (JSON com comentários) são supersets do JSON — use um parser diferente para esses formatos.
Ele preserva a ordem das chaves?
A especificação JSON diz que a ordem das chaves não é significativa, mas a maioria dos parsers a preserva no round-trip. Esta ferramenta mantém a ordem de inserção, o que normalmente é o que você quer para diffs legíveis.
Ele consegue lidar com arquivos JSON muito grandes?
Navegadores modernos lidam com arquivos JSON de 10-50 MB, mas isso pode deixar o editor lento. Para arquivos com centenas de MB, use um parser de streaming (jq na linha de comando, ferramentas ndjson); parsers de navegador carregam toda a árvore na memória.
Meu JSON é enviado para algum servidor?
Não. O parse e a formatação rodam no seu navegador via JSON.parse e JSON.stringify. O JSON colado não é transmitido.
Por que números grandes estão perdendo precisão?
O JSON.parse do JavaScript usa Number, que é de precisão dupla IEEE 754. Inteiros acima de 2^53 perdem precisão (por exemplo, 9007199254740993 é silenciosamente arredondado). Para BigInt ou parse que preserve strings, use um parser personalizado ou marque os números grandes como strings já no produtor.
E sobre JSONC (JSON com comentários)?
O JSON estrito proíbe comentários. Algumas IDEs (arquivos de configuração do VS Code) usam JSONC, que adiciona comentários // e /* */. O formatador normalmente oferece um modo 'JSONC' que preserva os comentários; em modo estrito, comentários são erro de sintaxe.