JSON (JavaScript Object Notation) é um formato de texto leve para armazenar e trocar dados estruturados. Ele move a grande maioria das APIs web, a maior parte dos arquivos de configuração e inúmeros bancos de dados. Se você já viu uma resposta de API REST ou abriu um arquivo package.json, já leu JSON. Este guia explica exatamente o que é JSON, como o formato se parece e por que ele se tornou a lingua franca da troca de dados.
O que é JSON?
JSON significa JavaScript Object Notation. Foi criado por Douglas Crockford no início dos anos 2000 como alternativa mais simples ao XML para trocar dados entre um servidor web e um navegador. Apesar do „JavaScript“ no nome, JSON é independente de linguagem —— todas as linguagens principais trazem um parser JSON embutido.
O formato é definido por dois padrões internacionais: a RFC 8259 do IETF (história e principais mudanças) e a ECMA-404 da Ecma International. Os dois dizem a mesma coisa: JSON é uma sequência de caracteres Unicode que representa um dentre seis tipos de dados, codificada em UTF-8.
Os seis tipos de dados de JSON
JSON suporta exatamente seis tipos de valor. Entendê-los é a base para entender o formato JSON.
1. Objeto (Object)
Uma coleção não ordenada de pares chave–valor entre chaves. As chaves precisam ser strings (entre aspas duplas). Os valores podem ser de qualquer tipo JSON.
{
"name": "Alice",
"age": 30,
"active": true
}2. Array
Uma lista ordenada de valores entre colchetes.
["apple", "banana", "cherry"]3. String
Uma sequência de caracteres Unicode entre aspas duplas. Aspas simples não são JSON válido.
"Hello, world!"4. Número (Number)
Um inteiro ou um número de ponto flutuante. JSON não tem tipos separados para inteiros e floats —— só number. Sem aspas, sem literais hex, sem NaN ou Infinity.
42
3.14
-7
1.5e105. Booleano (Boolean)
Exatamente true ou false, em minúsculas. JSON não aceita True, False, yes, no, 1 ou 0 como booleanos.
true
false6. Null
Representa ausência de valor. Escrito como null em minúsculas.
nullO que é um arquivo JSON? (e o formato .json)
Um arquivo JSON (às vezes digitado como jason file) é um arquivo de texto plano que contém um único valor JSON —— normalmente um objeto ou array. O formato .json é simplesmente texto UTF-8 conforme RFC 8259, com a extensão .json por convenção. Por ser texto plano, você não precisa de um visualizador especial.
Como abrir um arquivo JSON (ou .json): qualquer editor de texto serve —— VS Code, Notepad, TextEdit, Sublime, nano. A mesma pergunta aparece de várias formas —— how to open json files, how to open a .json file, how do i open a json file, how do you open a json file ou só open json file —— e a resposta é a mesma: abra como texto. Para uma visão mais legível, cole o conteúdo no Visualizador JSON para uma árvore expansível, ou na ferramenta JSON Fix para formatá-lo. No macOS e no Windows, dar dois cliques num .json costuma abri-lo no editor de texto padrão; se tentar abrir no navegador, clique com o botão direito e escolha „Abrir com“ para selecionar um editor. Não precisa descompactar nada —— .json não são arquivos comprimidos.
Como criar um arquivo JSON (também buscado como „how to make a json file“): abra qualquer editor de texto, escreva um único valor JSON válido (um objeto, array, string, número, booleano ou null) e salve com a extensão .json. Esse é todo o processo —— sem cabeçalho, sem declaração de schema, sem marcador de codificação obrigatório além de UTF-8. Programas leem como JSON assim que reconhecem a extensão. Um pequeno json file example: { "name": "Ada", "active": true }.
O que é o formato JSON? (e a busca relacionada, why files are stored in json format): o formato JSON é um formato de texto pequeno e independente de linguagem para dados —— chaves, valores, arrays e objetos, com um conjunto fixo de tipos literais. Arquivos são salvos nesse formato porque o mesmo documento pode ser lido por Python, Go, Java, JavaScript, Rust e bancos de dados sem tradução —— JSON é o menor denominador comum para mover dados estruturados entre sistemas.
// users.json
[
{ "id": 1, "name": "Alice", "role": "admin" },
{ "id": 2, "name": "Bob", "role": "editor" }
]Arquivos JSON comuns que você provavelmente já viu:
package.json—— metadados e dependências de um projeto Node.jstsconfig.json—— configuração do compilador TypeScriptsettings.json—— configurações de usuário do VS Codemanifest.json—— manifest de extensão de navegador ou PWA
O que é o formato de dados JSON?
O formato de dados JSON tem algumas regras estritas que o distinguem do código JavaScript que se parece com ele:
- Todas as chaves precisam ser strings entre aspas duplas.
{ name: "Alice" }é literal de objeto JavaScript, não JSON. - Strings precisam usar aspas duplas.
{ "name": 'Alice' }não é JSON válido. - Sem vírgulas finais.
{ "a": 1, }não é JSON válido. - Sem comentários.
// commente/* block comment */não são permitidos em JSON. - Sem
undefined. Oundefineddo JavaScript não tem equivalente em JSON. Usenullno lugar.
JSON vs XML: por que JSON venceu (xml vs json)
JSON é a mesma coisa que XML? Não —— os dois carregam dados estruturados, mas os formatos são distintos em forma, tamanho e maquinário. Antes de JSON se firmar, XML era o formato padrão de troca de dados. Os mesmos dados nos dois:
<!-- XML -->
<user>
<name>Alice</name>
<age>30</age>
</user>
// JSON
{ "name": "Alice", "age": 30 }JSON é mais compacto, mais fácil de ler para humanos e nativamente parseável em JavaScript sem biblioteca de terceiros. Na maioria dos casos —— respostas de API, configuração, mensageria —— JSON exige bem menos banda e menos código que XML.
Onde JSON é usado
- APIs REST: o cabeçalho
Content-Type: application/jsonmarca praticamente toda resposta moderna de API web. - Arquivos de configuração:
package.json,tsconfig.json,.eslintrc.json, templates do AWS CloudFormation. - Bancos de dados: PostgreSQL, MySQL, MongoDB e DynamoDB suportam armazenar e consultar colunas ou documentos JSON nativamente.
- Arquivos de log: logging estruturado (usando JSON Lines) torna os dados parseáveis por máquinas como Elasticsearch.
- Comunicação entre processos: microsserviços, filas de mensagens (Kafka, RabbitMQ) e funções serverless usam JSON como formato de payload padrão.
JSON em bancos de dados
A maioria dos bancos de dados modernos pode armazenar e consultar JSON diretamente, então um documento não precisa morar num armazenamento documental separado para manter a estrutura:
- PostgreSQL —— dois tipos:
jsonguarda o texto exato;jsonbguarda uma representação binária indexável. Consulte com->/->>para campos e@>para containment; indexe caminhos quentes com um índice GIN sobre a colunajsonb. - MongoDB —— documentos são do tipo JSON (BSON em disco). Índices por campo e pipelines de agregação completos trabalham diretamente sobre a forma do documento.
- SQLite —— a extensão JSON1 (integrada no SQLite moderno) fornece
json_extract,json_eache colunas geradas indexadas a partir de campos JSON. - MySQL —— um tipo de coluna
JSONnativo, além de expressões de caminho eJSON_TABLEpara juntar valores JSON como linhas.
Dois lembretes práticos para todos: inteiros grandes podem perder precisão ao passar pelo driver do cliente, e a spec JSON não define ordem canônica de chaves —— se você precisa de comparações ou hashing determinísticos, use RFC 8785 (JCS).
Erros JSON comuns
Até desenvolvedores experientes escrevem JSON inválido. Os erros mais comuns:
- Vírgulas finais depois do último item
- Aspas simples em vez de duplas
- Chaves sem aspas
- Comentários JavaScript dentro do JSON
- Valores estilo Python como
True,False,None
Se seu JSON não parseia, conserte online instantaneamente —— a ferramenta repara automaticamente esses problemas e mostra exatamente o que mudou.
Parsear JSON em código
Todas as linguagens principais trazem suporte JSON embutido:
// JavaScript
const obj = JSON.parse('{"name":"Alice","age":30}');
console.log(obj.name); // "Alice"
# Python
import json
obj = json.loads('{"name":"Alice","age":30}')
print(obj['name']) # Alice
# Go
import "encoding/json"
var obj map[string]interface{}
json.Unmarshal([]byte(`{"name":"Alice","age":30}`), &obj)Como ler um arquivo JSON em Python (ou read json file in python): use json.load(open('data.json')) para um caminho de arquivo, ou json.loads(text) quando o JSON já é string. Os dois lançam json.JSONDecodeError em erros de sintaxe.
A escolha de JSON em vez de XML em sistemas modernos costuma se reduzir a bytes na rede e suporte de parser —— todas as linguagens suportam JSON nativamente, enquanto XML normalmente precisa de uma biblioteca de terceiros.
Variantes comuns de JSON que você vai encontrar
JSON estrito é a base, mas existem alguns dialetos próximos que aparecem com frequência:
- JSONC (JSON com comentários) —— JSON que permite comentários
//e/* */e vírgulas finais.tsconfig.jsone osettings.jsondo VS Code usam. Parsers padrão rejeitam; use um parser que entenda JSONC ou remova os comentários antes. - NDJSON / JSON Lines —— um valor JSON por linha, separadas por
\n. Usado para logs em streaming, datasets de ML e APIs em massa. Parse cada linha comJSON.parse, não o arquivo inteiro. - JSON Pointer (RFC 6901) —— uma sintaxe de caminho para endereçar um valor dentro de um documento, ex.:
/users/0/name. É o formato de caminho usado por JSON Patch e por$refdo JSON Schema.
Perguntas frequentes
O que JSON significa?
JSON significa JavaScript Object Notation. Apesar do nome, é independente de linguagem —— todas as principais podem ler e escrever —— e é definido pela RFC 8259 e ECMA-404.
Quais são os tipos de dados em JSON?
Seis: string, number, boolean, null, object e array. Sem tipo inteiro separado, sem tipo de data, sem undefined. Veja Exemplos de formato JSON para cada um em contexto.
JSON é a mesma coisa que um objeto JavaScript?
Não. JSON é um formato de texto com regras estritas (chaves entre aspas duplas, sem vírgulas finais, sem comentários); um literal de objeto JavaScript é código bem mais permissivo. Veja JSON vs objetos JavaScript.
Como verifico se um JSON é válido?
Parseie com JSON.parse() (lança em entrada inválida) ou siga Como validar JSON e passe por um validador. Para impor estrutura e tipos, descreva com JSON Schema.
Ferramentas para trabalhar com JSON
- JSON Fix —— valida, repara e formata JSON inválido instantaneamente
- O que é JSON Schema? —— descreva e valide a estrutura dos dados JSON
- Como formatar JSON —— pretty-print em JavaScript, Python, linha de comando ou navegador
- Exemplos de formato JSON —— exemplos copiáveis cobrindo cada tipo de dado e padrão do mundo real
- JSON Diff —— compare dois documentos JSON e veja o que mudou
- YAML para JSON —— converta configuração YAML em formato JSON