JSON para JSON Schema
JSON to JSON Schema
Infere um JSON Schema de um ou vários exemplos, unindo as formas que encontra.
Descreve um documento de exemplo como um JSON Schema (2020-12): tipos, propriedades, `required` e `$defs` aninhados para formas repetidas. Útil para um teste de contrato, um componente OpenAPI ou qualquer lugar em que um validador quer um esquema em vez de um exemplo.
JSON de exemplo
Solte um arquivo .json
Lido nesta aba. Nada é enviado.
Dê todos os elementos que você tiver. Cada registro a mais estreita o palpite: um campo que falta em um deles é o que o torna opcional.
TypeScript
Como usar
Cole todos os registros que você tiver
Cada elemento de cada array é lido e mesclado, não só o primeiro. Três registros dizem muito mais do que um, porque um campo ausente em um deles é exatamente o que torna esse campo opcional.
Dê nome ao tipo raiz
Objetos aninhados recebem o nome da chave que os contém, no singular para arrays, então `users` produz um `User`. Só a raiz precisa de um nome seu.
Leia as contagens abaixo da saída
Tipos, campos opcionais, uniões e quantos registros foram mesclados. Uma contagem de uniões acima de zero significa que um campo teve dois tipos de valor diferentes na sua amostra — vale olhar antes de colar o resultado em uma base de código.
Leve o esquema a um validador
A saída carrega sua palavra-chave `$schema`, então pode ir direto para o validador de JSON Schema deste site ou para qualquer implementação de 2020-12.
Perguntas frequentes
Qual draft é este?
Draft 2020-12, declarado na palavra-chave `$schema`. Formas reutilizáveis vão em `$defs` e são referenciadas com `$ref`, que é a grafia desse draft; ferramentas de Draft-07 querem `definitions` e não vão resolver essas referências.
Por que nada é restringido além do tipo?
Nenhum `format`, `minLength`, `pattern` ou `enum` é emitido. Cada um deles seria inferido de um punhado de registros, e um esquema que rejeita dados válidos de produção é pior do que um que é apenas frouxo. Adicione as restrições que você consegue justificar de verdade.
`additionalProperties` é definido?
Fica aberto, o que significa que chaves extras validam. Fechá-lo transformaria cada campo que a API adicionar depois em uma falha de validação, e uma amostra não pode te dizer se a forma foi pensada para ser fechada.
Como ele decide o que entra em `required`?
Uma propriedade é obrigatória quando estava presente em todos os registros mesclados naquela forma. Cole um registro e tudo é obrigatório; cole cinco e o esquema começa a te dizer algo real.
Pode receber de
JSON para TypeScript
JSON to TypeScript
Infere interfaces ou tipos TypeScript a partir de um exemplo de JSON, mesclando campos opcionais e de união.
JSON para schema Zod
JSON to Zod Schema
Monta um schema Zod a partir de um exemplo de JSON, inferindo nullable, opcional e enum.
Validador de JSON Schema
JSON Schema Validator
Valida um documento contra um JSON Schema e informa cada falha com o caminho da instância.
Formatador e validador de JSON
JSON Formatter & Validator
Formata, minifica e valida JSON, apontando a linha e a coluna exatas de um erro de sintaxe.
Em seguida
Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.
Validador de JSON Schema
JSON Schema Validator
Valida um documento contra um JSON Schema e informa cada falha com o caminho da instância.
JSON para TypeScript
JSON to TypeScript
Infere interfaces ou tipos TypeScript a partir de um exemplo de JSON, mesclando campos opcionais e de união.
JSON para schema Zod
JSON to Zod Schema
Monta um schema Zod a partir de um exemplo de JSON, inferindo nullable, opcional e enum.
Linter de OpenAPI
OpenAPI Linter
Verifica um documento OpenAPI em busca de respostas faltando, schemas sem uso, referências que não apontam para nada e os outros defeitos que quebram geradores de código.
JSON ⇄ CSV conversor
JSON ⇄ CSV
Achata JSON aninhado em colunas ou reconstrói objetos a partir de uma tabela, com uma regra de nome de coluna por caminho com pontos.
Comparar JSON
JSON Diff
Compara dois documentos JSON estruturalmente, ignorando a ordem das chaves e informando os caminhos adicionados, removidos e alterados.