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.
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
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.
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.
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.
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
JSON a tipos de TypeScript
JSON to TypeScript
Deduce interfaces o tipos de TypeScript a partir de un JSON de ejemplo, fusionando campos opcionales y uniones.
JSON a esquema de Zod
JSON to Zod Schema
Construye un esquema de Zod a partir de un JSON de ejemplo, deduciendo campos nulos, opcionales y enumeraciones.
Validador de JSON Schema
JSON Schema Validator
Valida un documento contra un JSON Schema e informa de cada fallo con la ruta de la instancia.
Formateador y validador de JSON
JSON Formatter & Validator
Indenta, minifica y valida JSON, señalando la línea y la columna exactas del error de sintaxis.
Después
Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.
Validador de JSON Schema
JSON Schema Validator
Valida un documento contra un JSON Schema e informa de cada fallo con la ruta de la instancia.
JSON a tipos de TypeScript
JSON to TypeScript
Deduce interfaces o tipos de TypeScript a partir de un JSON de ejemplo, fusionando campos opcionales y uniones.
JSON a esquema de Zod
JSON to Zod Schema
Construye un esquema de Zod a partir de un JSON de ejemplo, deduciendo campos nulos, opcionales y enumeraciones.
Analizador de calidad de OpenAPI
OpenAPI Linter
Revisa un documento OpenAPI en busca de respuestas que faltan, esquemas sin usar, referencias que no apuntan a nada y los demás defectos que rompen los generadores de código.
JSON a CSV y de vuelta
JSON ⇄ CSV
Aplana JSON anidado en columnas o reconstruye los objetos desde una tabla, con nombres de columna en notación de puntos.
Comparar dos JSON
JSON Diff
Compara dos documentos JSON por estructura, ignorando el orden de las claves e informando de las rutas añadidas, eliminadas y modificadas.