JSON Schema: do básico à produção
Há muitas palavras-chave, mas só uma dúzia é usada todos os dias. Acerte `type`/`properties`/`required`/`$ref`, trate bem as mensagens de erro, e você cobre oitenta por cento dos casos reais.
Descreva a forma dos seus dados com JSON Schema, transforme acordos verbais em validação executável e deixe-o impulsionar tipos TypeScript e geração de formulários em seguida.
7 artigosHá muitas palavras-chave, mas só uma dúzia é usada todos os dias. Acerte `type`/`properties`/`required`/`$ref`, trate bem as mensagens de erro, e você cobre oitenta por cento dos casos reais.
Tipos e schemas cobrem cada um um segmento: um em tempo de compilação, outro em tempo de execução. A questão não é qual escolher, mas como manter os dois sincronizados automaticamente.
Schemas gerados frequentemente bloqueiam dados válidos. Aprenda por que amostras mais ricas produzem schemas piores e depois o fluxo: amostragem multi-registro, completude semântica, localização de erros.
`$ref` resolve reutilização, `allOf` e `oneOf` resolvem composição, e empilhar os dois é onde as coisas quebram. Cobre `$id`, `$defs`, condicionais, recursão, empacotamento e depuração.
Um validador emite erros legíveis por máquina; usuários querem saber qual caixa de entrada está errada. Cobre o array de erros do Ajv, instancePath versus schemaPath, agrupamento e redação.
Validação bem-sucedida não significa dados limpos. O Pydantic ignora campos desconhecidos por padrão, o Zod os remove e o Ajv deixa passar — parâmetros alucinados e chaves com erro de digitação atravessam em silêncio. Este artigo mostra as três formas de aceitação silenciosa e dá receitas completas: fechar objetos, controlar coerção e apertar cada nível de aninhamento.
Um schema não termina quando é escrito — é ali que começa a degradação. Um erro de digitação afrouxa a validação em silêncio, uma refatoração quebra todas as fixtures. Este guia apresenta uma arquitetura viável de teste de contrato: fixtures positivos, negativos e de snapshot, lint do próprio schema, compilação única reutilizada e quatro portões de CI que transformam quebra de contrato em build vermelho.