AZ Tools

Gerador de JSON Schema

Desenvolvimento

Percorre o JSON colado, infere tipos (integer / number / string / boolean / null / array / object), detecta formatos comuns de string (email, URI, UUID, IPv4, date, date-time) e emite JSON Schema pra validação. Opcionalmente marca cada propriedade como required e embute o valor como entrada `examples`.

JSON Schema (draft-07)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "email": {
          "type": "string",
          "format": "email"
        },
        "verified": {
          "type": "boolean"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "address": {
          "type": "object",
          "properties": {
            "street": {
              "type": "string"
            },
            "city": {
              "type": "string"
            }
          },
          "required": [
            "street",
            "city"
          ]
        }
      },
      "required": [
        "id",
        "name",
        "email",
        "verified",
        "roles",
        "address"
      ]
    }
  },
  "required": [
    "user"
  ]
}

Como usar

  1. Cole uma amostra JSON na caixa de entrada.
  2. Escolha se todas as propriedades devem ser required (melhor pra contratos API estritos) ou só as chaves que existem (bom pra payloads parciais / patch).
  3. Opcionalmente inclua o valor como `examples` pra docs gerados mostrarem amostra junto ao tipo.

Perguntas frequentes

Qual draft alveja?
draft-07 — a versão com mais suporte em validadores, code generators e ferramentas de editor como Stoplight ou Redocly. Saída também compatível com o fragmento JSON Schema usado pelo OpenAPI 3.0.
Como lida com arrays de tipos mistos?
Se todos os elementos produzem o mesmo schema, `items` colapsa pra esse schema. Se diferem, `items.type` vira união (`['string', 'integer']`). Não gera `anyOf` / `oneOf` — mantém-se simples.
Quais formatos de string são auto-detectados?
`date-time`, `date`, `email`, `uri`, `uuid`, `ipv4`. Correspondência deve ser na string inteira, não substring.
E campos nullable?
Um valor null na entrada vira `"type": "null"`. Pra campos optional-nullable, rode o gerador em amostras representativas e faça merge — a ferramenta mantém schema mínimo em vez de adivinhar.

Ferramentas relacionadas