JSON Schema
JSON Schema es un vocabulario que le permite validar, anotar y manipular documentos JSON, de forma segura y fiable.
se utiliza principalmente cuando tienes un JSON, que:
- se necesita armar y es complejo en campos y estructura.
- la respuesta de un servicio con muchos campos.
- tiene demasiados campos para realizar una validacion mediante código.
JSON Schema permite definir un JSON, para validar la estructura de otro JSON así tal cual!.
Nota
Callisto utiliza la versión/borrador 2020-12.
Borradores
A la versión actual del estandar se le denomina comunmente borrador, la versión que se utiliza, por ejemplo en Callisto para la validación de la estructura del cuerpo de la petición de algunos servicios es 2020-12.
Implementaciones
Las implementaciones son librerias en diferentes lenguajes de programación para validar esquemas.
Ejemplos
Tenemos el siguiente JSON:
Este ejemplo en particular, tiene varios tipos de datos y carácteristicas que lo hacen expecialmente complicado de validar, sí lo que se quiere, es que no solo la estructura del JSON sea válida (campos requeridos, tipos de datos correctos por campo etc..). si no que los datos sean consistentes.
Normalmente con muchas validaciónes en tu código (muchas líneas de código), revisarías cada campo y su tipo de datos.
Sin embargo al definir un "esquema" con JSON Schema, la validación del JSON de entrada resulta muy sencilla.
Importante
En este punto, como se comentaba más arriba...
JSON Schema permite definir un JSON para validar un esquema de otro JSON.
Ahora se define cada aspecto de la validación:
Y finalmente tenemos nuestro esquema:
Para tener en cuenta
Definir un esquema para validar grandes estructuras JSON, reduce significativamente la cantidad de código para realizar validaciones y consigo mismo, los errores que esto pueda conllevar, además los datos serán revisados de forma estricta y los errores por información errónea se reduce casi a cero.
Lectura recomendada
- El módulo app.utils.validate_schema
- El módulo app.common.middlewares.json_schema
- JSON Schema
- JSON Schema Especifications
- jsonschema validator Un validador de esquemas JSON interactivo y en línea. Compatible con varias versiones de JSON Schema.
- quicktype genera tipos y convertidores a partir de JSON Schema.
- jsoneditoronline