Lição 11
Gerar texto JSON a partir de valores
Serialização, ordem de chaves e saída estável para testes e APIs.
Geração (serialização) percorre seus valores em memória e escreve texto JSON — para respostas HTTP, export de arquivos ou fixtures de teste. É o inverso do parse, com suas próprias escolhas de design.
Comportamento padrão varia
A maioria dos serializers:
- Omite propriedades
undefined(JavaScript) ou exige tratamento explícito de null - Escapa strings automaticamente
- Escreve números em forma decimal
Exemplo conceitual:
{"status": "ok", "count": 3}
a partir de um objeto com campos status e count.
Ordem de chaves e saída estável
Ordem de chaves de objeto não é semanticamente significativa em JSON, mas a ordem de bytes serializada é significativa para:
- Diffs no Git e snapshot tests
- Assinaturas criptográficas sobre bytes brutos
- Chaves de cache construídas a partir de JSON canônico
Equipes às vezes ordenam chaves alfabeticamente antes de gerar texto para que dois objetos logicamente iguais produzam strings idênticas.
Geração pretty vs compacta
| Modo | Use quando |
|---|---|
| Pretty (indentado) | Revisão humana, docs, debug |
| Compacto | Transferência na rede, tamanho de storage importa |
Os mesmos dados podem ser válidos em ambas as formas — escolha pelo público, não pela correção.
Pensamento de round-trip
Fluxo ideal: valores → texto → parse → valores iguais. Números de ponto flutuante, inteiros grandes ou tipos customizados (datas, BigInt) podem não fazer round-trip perfeito a menos que você defina convenções (strings ISO de data, decimais codificados como string).
Documente essas convenções em specs de API para clientes e servidores concordarem.