O que esta ferramenta faz
Uma amostra JSON vira um JSON Schema no draft 2020-12.
{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"address": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
},
"required": ["id", "name", "address"]
}
Os objetos aninhados são escritos no lugar. Sem seção $defs e sem $ref: para uma amostra, um esquema em linha é o que se lê de cima a baixo.
Dois ajustes, porque as duas respostas se defendem
- Chaves obrigatórias. Ligado por padrão: cada chave da amostra fica listada. Desligado: nenhum array
required, e um documento sem uma chave valida assim mesmo. additionalProperties. Permissivo por padrão — uma chave a mais passa. No estrito,"additionalProperties": falseé acrescentado a cada objeto e uma chave inesperada vira erro.
Nenhuma das duas escolhas se lê numa amostra. São afirmações sobre a sua API: cabem a você, em vez de serem adivinhadas aqui.
integer e number vêm do literal
3 dá integer; 3.0 e 1e3 dão number. O JSON tem um único tipo numérico: como um número foi escrito é o único rastro do que o produziu. Um esquema que chame 10.0 de inteiro recusa 10.5, muito provavelmente o registro seguinte — era exatamente o que esta ferramenta fazia até o defeito ser encontrado e corrigido ao escrever estas páginas.
O que a amostra não descreve
"n": nulldá{"type": "null"}, um esquema que não aceita mais nada. Se o campo for uma string anulável, o retoque é{"type": ["string", "null"]}.- Um array vazio dá
{"type": "array"}semitems: nada se afirma sobre elementos que nunca apareceram. - Um array heterogêneo dá
anyOf, listando exatamente as formas presentes. - Nem
format, nemminLength, nempattern. Um e-mail, um UUID e uma frase são todos"type": "string"aqui. Acrescentar"format": "email"seria adivinhar um sentido, não ler uma estrutura — e é a primeira coisa a acrescentar à mão quando você conhece o campo.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.