O que é JSON? Um guia simples, com exemplos
JSON (JavaScript Object Notation) é um formato de texto simples para registrar dados estruturados — coisas como um cliente, um pedido ou uma lista de produtos — como nomes associados a valores. É fácil para as pessoas lerem e fácil para os programas gerarem e interpretarem. Quando apps e serviços trocam dados pela web, o JSON é de longe o formato mais comum.
Por que o JSON importa quando você cria apps com IA
Você vai encontrar JSON o tempo todo, mesmo que nunca escreva código:
- APIs. Quando as telas do seu app carregam dados do backend, ou quando o seu backend chama um serviço de pagamento, e-mail ou IA, os dados normalmente trafegam como JSON. Veja o que é uma API.
- Arquivos de configuração. Muitos arquivos de configuração de projetos são JSON — por exemplo, o
package.json, que lista as dependências de um projeto JavaScript. - Bancos de dados. O Postgres pode guardar JSON em uma coluna (o tipo
jsonb) para dados que não cabem em linhas e colunas bem definidas. Veja o que é o Postgres. - Saída de IA. Quando você quer que um modelo de IA devolva algo que um programa consiga usar — uma lista de tags, campos extraídos de uma nota fiscal —, normalmente pede JSON.
- Mensagens de erro e logs. Muitos erros chegam em JSON, e lê-los costuma ser a forma mais rápida de descobrir o que deu errado.
Saber ler JSON permite conferir o que o seu app realmente recebeu, identificar um campo que falta e descrever os problemas com precisão para a sua ferramenta de criação.
Uma analogia do dia a dia
Pense em um formulário de papel: Nome: ____, Telefone: ____, Newsletter: ☐ sim ☐ não. Cada resposta é um rótulo com um valor ao lado. O JSON é esse formulário escrito como texto, em um layout rígido que o computador consegue ler sem adivinhar. E, como os formulários, o JSON pode ter seções dentro de seções (um bloco de endereço com rua, cidade e CEP) e listas (vários telefones).
Como é um JSON
Aqui está uma única reserva em JSON:
{
"id": 5001,
"cliente": "Lena Park",
"servico": "Corte de cabelo",
"inicioEm": "2026-10-03T14:00:00Z",
"preco": 35.5,
"pago": false,
"observacoes": null,
"extras": ["aparar barba", "toalha quente"],
"contato": {
"email": "lena@exemplo.com",
"telefone": "+44 20 7946 0000"
}
}
Lendo:
- As chaves
{ }envolvem um objeto — um conjunto de pares nome/valor. - Cada par é
"nome": valor, separados por vírgulas. - Os colchetes
[ ]envolvem um array — uma lista ordenada. - Objetos e arrays podem ficar um dentro do outro, como acontece com
contatoeextras.
Os seis tipos de valor
O JSON tem apenas seis tipos de valor. Essa lista curta é uma grande parte do motivo de ele funcionar em todos os lugares.
| Tipo | Exemplo | Observações |
|---|---|---|
| String (texto) | "Lena Park" | Sempre entre aspas duplas |
| Número | 35.5, -2, 1e6 | Sem aspas; sem símbolos de moeda |
| Booleano | true, false | Minúsculo, sem aspas |
| Null | null | “Nenhum valor” |
| Objeto | { "cidade": "Leeds" } | Valores nomeados |
| Array | [1, 2, 3] | Lista ordenada; os itens podem ser de qualquer tipo |
Não existe tipo de data. As datas são escritas como strings, normalmente no formato ISO 8601 mostrado acima (2026-10-03T14:00:00Z, em que Z significa UTC). Combinar esse formato evita toda uma categoria de erros de fuso horário.
As regras rígidas (de onde vêm os erros)
O JSON é menos tolerante do que parece. Todos estes exemplos são inválidos:
{ nome: "Lena" } ← chave sem aspas duplas
{ 'nome': 'Lena' } ← aspas simples
{ "a": 1, "b": 2, } ← vírgula sobrando
{ "a": 1 "b": 2 } ← vírgula faltando
{ "a": 1 // comentário } ← comentários não são permitidos
A maioria dos erros “Unexpected token” que você verá é um desses. Um validador ou formatador de JSON mostra a linha exata.
Um exemplo prático: JSON passando por um app
Uma cliente agenda um corte de cabelo em um app de salão. Veja onde o JSON aparece:
- O formulário de reserva envia isto para o backend do app:
{ "servico": "Corte de cabelo", "inicioEm": "2026-10-03T14:00:00Z", "nome": "Lena Park" }
- O backend salva a reserva no banco de dados e responde com o status
201 Createde:
{ "id": 5001, "status": "confirmado" }
- Se o horário já estiver ocupado, ele pode responder com o status
409 Conflicte:
{ "error": "slot_taken", "message": "Esse horário acabou de ser reservado. Escolha outro." }
A página lê status ou error e mostra a mensagem certa. Se a página mostrasse uma tela em branco, abrir as ferramentas de desenvolvedor do navegador (aba Network) mostraria esse JSON — muitas vezes a pista mais rápida sobre o que deu errado.
Termos principais
| Termo | Significado |
|---|---|
| Chave (key) | O nome em um par nome/valor, como "email". |
| Parse | Transformar texto JSON em dados que um programa consegue usar. |
| Serializar / stringify | Transformar dados em texto JSON para enviar ou guardar. |
| Payload | Os dados enviados em uma requisição ou resposta. |
| Schema | Uma descrição do formato que os dados devem ter — quais campos e quais tipos. O JSON Schema é um padrão para escrevê-la. |
| JSONB | O tipo de coluna JSON binário do Postgres, que pode ser indexado e consultado. |
| NDJSON / JSON Lines | Um objeto JSON por linha, comum em logs e streaming. |
Ideias equivocadas comuns
- “JSON é JavaScript.” Ele veio da sintaxe do JavaScript, mas não depende de linguagem; Python, Java, C#, Go e as demais leem JSON.
- “Números entre aspas tanto faz.”
"35"é um texto, não um número. Misturar os dois causa bugs como"35" + "5"virar"355". Dinheiro costuma ser melhor guardado em centavos inteiros (3550) para evitar problemas de arredondamento. - “JSON é seguro porque são só dados.” O JSON pode carregar qualquer coisa, inclusive segredos. Não coloque chaves de API em um JSON enviado ao navegador.
- “Coloque tudo em uma coluna JSON.” É prático para extras flexíveis, mas dados que você pesquisa, filtra ou relaciona normalmente devem ficar em colunas próprias.
- “A IA sempre devolve JSON válido.” Os modelos podem acrescentar texto extra ou quebrar o formato. Muitos provedores oferecem um modo de saída estruturada; o seu código ainda assim deve conferir o que voltou.
O que pedir à sua ferramenta de IA
- “Mostre um exemplo do JSON que este endpoint devolve.”
- “Devolva os erros em JSON com um código
errore umamessagelegível por pessoas.” - “Guarde as datas como strings ISO 8601 em UTC e converta para o horário local apenas na tela.”
- “Guarde os preços como centavos inteiros.”
- “Valide o JSON recebido no servidor e rejeite requisições com campos faltando ou com tipo errado.”
- “Ao chamar o modelo de IA, peça JSON neste formato exato e confira a resposta antes de usá-la.”
JSON no Mythex
No Mythex, você não precisa escrever JSON à mão — você descreve o que quer e o agente escreve o código que envia e lê esses dados. Ainda assim, vale reconhecê-lo: quando algo quebra, colar a mensagem de erro do JSON no chat dá ao agente uma pista precisa. A receita de backend REST API da documentação pede “mensagens de erro claras em JSON” desde o início, e a receita integrar qualquer API trata de chamar serviços externos. Para a visão geral, veja REST vs GraphQL e como depurar um app criado com IA.
Perguntas
O que é JSON, em termos simples?
JSON (JavaScript Object Notation) é um formato de texto simples para registrar dados estruturados como nomes e valores, como "nome": "Lena". Quase todas as APIs da web usam JSON para trocar dados, e muitos apps o usam para configurações e dados guardados.
JSON é uma linguagem de programação?
Não. JSON é um formato de dados, não uma linguagem. Ele não faz nada sozinho — apenas descreve dados. Embora tenha vindo do JavaScript, praticamente todas as linguagens de programação conseguem ler e escrever JSON.
Qual é a diferença entre JSON e um objeto JavaScript?
Eles se parecem, mas o JSON é mais rigoroso. No JSON, toda chave precisa estar entre aspas duplas, as strings usam aspas duplas, não há comentários nem vírgulas sobrando no fim, e os valores se limitam a strings, números, true, false, null, objetos e arrays.
Por que meu JSON diz que é inválido?
As causas mais comuns são uma vírgula sobrando depois do último item, aspas simples em vez de duplas, uma vírgula faltando entre itens, um colchete não fechado ou um comentário. Cole o conteúdo em um validador de JSON, e ele vai apontar a linha.