JSON (JavaScript Object Notation) é um formato de texto para representar dados estruturados: objetos (mapas de chave → valor), arrays ordenados, strings, números, booleanos e null. Foi padronizado na ECMA-404 e descrito na RFC 8259 como formato comum na web.

Por que JSON domina APIs REST

  • Legível por humanos com indentação moderada.
  • Fácil de gerar e consumir em praticamente qualquer linguagem.
  • Mapeamento natural para objetos em JavaScript, dicionários em Python, struct/map em Go, etc.

Tipos e sintaxe essencial

  • Objeto: { "chave": valor } — chaves são strings entre aspas duplas.
  • Array: [ valor1, valor2 ] — ordem importa.
  • String: sequência Unicode escapada com \", \\, \n, \uXXXX quando necessário.
  • Número: decimal ou notação científica; sem separador de milhar; cuidado com precisão de ponto flutuante em moedas (prefira centavos inteiros em domínios financeiros).
  • Boolean: true ou false.
  • null: ausência explícita de valor.

JSON não aceita comentários // ou /* */ no padrão oficial — ferramentas que “relaxam” isso geram arquivos que quebram parsers estritos.

Para que serve no mundo real

  • Contratos de APIs HTTP (request/response).
  • Arquivos de configuração (package.json, manifests de CI).
  • Telemetria e logs estruturados (às vezes em linha única NDJSON).

Armadilhas frequentes

  1. Datas — não existe tipo date; use ISO 8601 em string ou timestamp numérico com convenção clara de fuso.
  2. Números grandes — inteiros acima de 2^53-1 perdem precisão em JSON.parse do JavaScript; use string para IDs enormes se precisar fidelidade absoluta.
  3. Ordem de chaves — em objeto, parsers modernos preservam inserção, mas não dependa disso entre sistemas.
  4. Duplicar chaves — comportamento indefinido; evite.

Relação com CSV e XML

  • CSV é tabular denso; converta com cuidado de tipos e delimitadores (guia do conversor).
  • XML preserva atributos, namespaces e documentos mistos; JSON prefere árvores homogêneas (o que é XML).

Experimentar

Cole um payload, valide a sintaxe e alterne entre formatado e minificado sem sair do navegador.