AZ Tools

Generador de JSON Schema

Desarrollo

Recorre el JSON que pegas, infiere tipos (integer / number / string / boolean / null / array / object), detecta formatos comunes de string (email, URI, UUID, IPv4, date, date-time) y emite un JSON Schema que puedes usar para validación. Opcionalmente marca cada propiedad como required y embebe el 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"
  ]
}

Cómo usar

  1. Pega una muestra JSON en la caja de entrada.
  2. Elige si todas las propiedades deben ser required (mejor para contratos API estrictos) o solo las claves que existen (bueno para payloads parciales / patch).
  3. Opcionalmente incluye el valor como `examples` para que los docs generados muestren una muestra junto al tipo.

Preguntas frecuentes

¿A qué draft apunta?
draft-07 — la versión con más soporte en validadores, code generators y herramientas de editor como Stoplight o Redocly. La salida también es compatible con el fragmento JSON Schema usado por OpenAPI 3.0.
¿Cómo maneja arrays de tipos mixtos?
Si cada elemento produce el mismo schema, `items` colapsa a ese schema. Si difieren, `items.type` se vuelve unión (`['string', 'integer']`). No genera `anyOf` / `oneOf` — se mantiene simple.
¿Qué formatos de string se auto-detectan?
`date-time`, `date`, `email`, `uri`, `uuid`, `ipv4`. La coincidencia debe ser en el string entero, no substring.
¿Y los campos nullable?
Un valor null en la entrada se vuelve `"type": "null"`. Para campos optional-nullable, ejecuta el generador en muestras representativas y haz merge — la herramienta mantiene el schema mínimo en lugar de adivinar.

Herramientas relacionadas