Developer

Formatação e Validação de JSON: Referência Rápida para Desenvolvedores

Formate, valide e compreenda JSON como um profissional. Abrange regras de sintaxe, erros comuns, JSONPath e ferramentas práticas para trabalhar com dados JSON.

7 min de leitura

Código na tela

JSON (JavaScript Object Notation) é a língua franca das APIs web. Simples por design — mas uma vírgula faltando ou uma chave mal fechada pode silenciosamente quebrar uma aplicação. Aqui está tudo o que você precisa para trabalhar com JSON com confiança.

Sintaxe JSON em 90 segundos

JSON possui exatamente seis tipos de valor:

{
  "string": "hello world",
  "number": 42,
  "boolean": true,
  "null_value": null,
  "array": [1, 2, 3],
  "object": { "nested": "value" }
}

Regras que costumam confundir:

  • Chaves devem ser strings com aspas duplas{name: "Alice"} não é um JSON válido
  • Sem vírgulas finais — [1, 2, 3,] é inválido
  • Sem comentários — JSON não possui sintaxe // ou /* */
  • Strings devem usar aspas duplas — aspas simples não são permitidas
  • Números não podem ter zeros à esquerda — 007 é inválido

Os erros mais comuns em JSON

1. Vírgula final

// Inválido
{ "a": 1, "b": 2, }

// Válido
{ "a": 1, "b": 2 }

2. Strings com aspas simples

// Inválido
{ 'name': 'Alice' }

// Válido
{ "name": "Alice" }

3. Chaves sem aspas

// Inválido
{ name: "Alice" }

// Válido
{ "name": "Alice" }

4. Valores undefined ou NaN — Esses valores do JavaScript não existem em JSON. Use null no lugar.

Formatação vs. minificação

JSON formatado (pretty-printed) usa indentação e quebras de linha para facilitar a leitura:

{
  "user": {
    "id": 1,
    "name": "Alice"
  }
}

JSON minificado remove todos os espaços em branco:

{"user":{"id":1,"name":"Alice"}}

Use JSON formatado em arquivos de configuração e código-fonte. Use JSON minificado em respostas de API e armazenamento para reduzir o tamanho do payload. Nosso JSON Formatter alterna entre os dois com um clique.

Validação com JSON Schema

JSON Schema permite definir a estrutura esperada de um documento JSON e validar dados em relação a ela. Isso é essencial para contratos de API e validação de arquivos de configuração.

Um schema simples:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["name", "age"],
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  }
}

Esse schema rejeita qualquer objeto que não contenha name ou age, ou onde age seja negativo. O JSON Schema Validator permite colar o schema e os dados para validação em tempo real.

Gerando tipos TypeScript a partir de JSON

Se você recebe uma resposta JSON de uma API e precisa de interfaces TypeScript, cole o JSON em nosso conversor JSON to TypeScript. Ele infere os tipos a partir da estrutura dos dados:

Entrada:

{ "id": 1, "name": "Alice", "active": true, "tags": ["admin"] }

Saída:

interface Root {
  id: number;
  name: string;
  active: boolean;
  tags: string[];
}

JSONPath: consultando dados aninhados

JSONPath está para JSON assim como XPath está para XML — uma linguagem de consulta para extrair valores de estruturas aninhadas. Sintaxe básica:

Expressão Significado
$.store.book A chave book dentro de store
$.store.book[0] Primeiro livro
$.store.book[*].title Todos os títulos de livros
$..price Todos os valores price em qualquer parte do documento

O JSON Path Finder permite clicar em qualquer valor em uma árvore JSON renderizada e copia o caminho automaticamente.

Comparando dois objetos JSON

Ao depurar mudanças em APIs ou divergências em configurações, você precisa ver o que mudou entre dois objetos JSON. O JSON Diff Viewer destaca campos adicionados, removidos e modificados lado a lado.

Convertendo JSON para Zod schema

Se você usa Zod para validação em tempo de execução no TypeScript, a ferramenta JSON to Zod converte um JSON de exemplo em um Zod schema pronto para uso, com inferência inteligente de tipos para campos de e-mail, URL e datetime.

Resumo

JSON é simples, mas implacável. Sempre valide antes de fazer o parse, use interfaces TypeScript para detectar incompatibilidades de estrutura em tempo de compilação e mantenha um formatter à mão para depurar respostas de API. Esses hábitos evitam categorias inteiras de bugs em tempo de execução.