Saltar al contenido

JSON a JSON Schema

JSON to JSON Schema

Deduce un JSON Schema a partir de uno o varios ejemplos, uniendo las formas que encuentra.

Describe un documento de ejemplo como un JSON Schema (2020-12): tipos, propiedades, `required`, y `$defs` anidados para las formas repetidas. Útil para una prueba de contrato, un componente de OpenAPI o cualquier sitio donde un validador quiere un esquema en lugar de un ejemplo.

🔒 Se ejecuta por completo en tu navegadorjson-schemajsoncodegenvalidation
Generar

JSON de ejemplo

Suelta un archivo .json

Se lee en esta pestaña. No se sube nada.

Dale todos los elementos que tengas. Cada registro de más estrecha la deducción: un campo que falte en uno de ellos es lo que lo vuelve opcional.

TypeScript

Cómo se usa

  1. Pega todos los registros que tengas

    Se lee y fusiona cada elemento de cada arreglo, no solo el primero. Tres registros dicen mucho más que uno, porque un campo ausente en uno de ellos es exactamente lo que hace que ese campo sea opcional.

  2. Da nombre al tipo raíz

    Los objetos anidados toman el nombre de la clave que los contiene, en singular para los arreglos, así que `users` produce un `User`. Solo la raíz necesita un nombre tuyo.

  3. Lee los recuentos bajo la salida

    Tipos, campos opcionales, uniones y cuántos registros se fusionaron. Un recuento de uniones mayor que cero significa que un campo tuvo dos clases de valor distintas en tu muestra, algo que conviene mirar antes de pegar el resultado en una base de código.

  4. Lleva el esquema a un validador

    La salida lleva su palabra clave `$schema`, así que puede ir directamente al validador de JSON Schema de este sitio o a cualquier implementación de 2020-12.

Preguntas frecuentes

¿Qué draft es este?

Draft 2020-12, declarado en la palabra clave `$schema`. Las formas reutilizables van en `$defs` y se referencian con `$ref`, que es la grafía de ese draft; las herramientas de Draft-07 quieren `definitions` y no resolverán estas referencias.

¿Por qué nada está restringido más allá de su tipo?

No se emite ningún `format`, `minLength`, `pattern` ni `enum`. Cada uno de ellos se inferiría de un puñado de registros, y un esquema que rechaza datos válidos de producción es peor que uno que simplemente es laxo. Añade las restricciones que puedas justificar de verdad.

¿Se establece `additionalProperties`?

Se deja abierto, lo que significa que las claves extra validan. Cerrarlo convertiría cada campo que la API añada más adelante en un fallo de validación, y una muestra no puede decirte si la forma está pensada para ser cerrada.

¿Cómo decide qué va en `required`?

Una propiedad es obligatoria cuando estaba presente en todos los registros que se fusionaron en esa forma. Pega un registro y todo es obligatorio; pega cinco y el esquema empieza a decirte algo real.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.