Sintaxe
Regras
{ }Objeto (pares chave-valor não ordenados)
[ ]Array (lista ordenada de valores)
"key": valueChaves devem ser strings com aspas duplas
No trailing commaO último item não deve ter vírgula
No commentsJSON não permite comentários
Exemplo Mínimo
{ "name": "Alice", "age": 30, "active": true }
Tipos de Dados
Seis Tipos de Valor
"string"Texto UTF-8 com aspas duplas
42 / 3.14Número (inteiro ou ponto flutuante)
true / falseBooleano
nullNulo (ausência de valor)
{ }Objeto
[ ]Array
Sequências de Escape em Strings
\"Aspas duplas
\\Barra invertida
\n \tNova linha, tabulação
\uXXXXEscape Unicode (hexadecimal)
Objetos
Sintaxe de Objeto
{ "id": 1, "name": "Widget", "tags": ["new", "sale"] }
Regras
KeysDevem ser strings únicas com aspas duplas
ValuesQualquer tipo JSON válido
OrderA ordem das chaves não é garantida
NestingObjetos podem conter objetos
Arrays
Sintaxe de Array
[1, "two", true, null, {"key": "val"}]
Array de Tipos Mistos
{ "matrix": [[1, 2], [3, 4]], "empty": [] }
Regras
OrderedElementos mantêm a ordem de inserção
Mixed typesItens do array podem ser de tipos diferentes
IndexingBase zero (na maioria das linguagens)
Aninhamento
Estrutura Aninhada
{ "user": { "name": "Alice", "address": { "city": "Boston" }, "scores": [95, 88, 72] } }
Padrões de Acesso
obj.user.nameNotação de ponto (JavaScript)
obj["user"]["name"]Notação de colchetes
obj.user.scores[0]Índice de array dentro de objeto aninhado
Validação de Schema
Exemplo de JSON Schema
{ "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer", "minimum": 0 } }, "required": ["name"] }
Palavras-chave de Schema
typestring, number, integer, boolean, object, array, null
requiredArray de nomes de propriedades obrigatórias
propertiesDefine as propriedades esperadas do objeto
enumRestringe a um conjunto fixo de valores
minLength / maxLengthRestrições de comprimento de string
minimum / maximumRestrições de intervalo numérico
Básico de jq
Filtros Comuns
.Identidade — passa a entrada adiante
.keyAcessa chave do objeto
.key.nestedAcessa chave aninhada
.[0]Primeiro elemento do array
.[]Itera todos os elementos do array
select(.age > 20)Filtra por condição
map(.name)Transforma cada elemento
lengthComprimento do array ou da string
keysChaves do objeto como array
Exemplos de jq
echo '{"a":1}' | jq '.a' # 1 echo '[1,2,3]' | jq 'map(. * 2)' # [2,4,6] cat data.json | jq '.users[].name' cat data.json | jq '.[] | select(.active)'
Padrões Comuns
Resposta de API
{ "status": 200, "data": [{"id": 1, "name": "Alice"}], "meta": {"total": 42, "page": 1} }
Arquivo de Configuração
{ "host": "localhost", "port": 8080, "debug": false, "features": ["auth", "logging"] }
Dicas
ValidateUse jsonlint ou python -m json.tool
Pretty printjq . file.json ou python -m json.tool
JSONLUm objeto JSON por linha (delimitado por nova linha)
JSON5 / JSONCExtensões que permitem comentários e vírgulas finais