Estoy desarrollando una pequeña aplicación web RESTful en python y usando JSON como interfaz. La aplicación acepta datos JSON y necesita validarlos contra un esquema. El esquema puede ser muy estricto o flexible dependiendo de la solicitud. Además, la aplicación puede necesitar validar objetos de usuario en una mejora posterior.
He encontrado algunas sugerencias en el desbordamiento de pila, así como en otros sitios web. Esos incluyen
Pero no pude encontrar una comparación adecuada.
En términos de simplicidad, flexibilidad y capacidad de ampliación, ¿cuál crees que debería elegir?
Cerberus parece ser muy flexible y la capacidad de extensión parece muy buena a partir de su documentación y ejemplos. Pero no sé acerca de las otras bibliotecas.
EDIT 1 : Por ahora, las necesidades de la aplicación son bastante simples y será suficiente una validación de esquema básica con alcance para agregar tipos personalizados y reglas de validación personalizadas. Entonces, si todas estas bibliotecas ofrecen los requisitos básicos, elegiría la que sea más simple de usar. También estoy abierto a otras sugerencias, si las hay.
Con la esperanza de encontrar alguna ayuda.
Me quedaría con Cerberus aunque sólo fuera por su maravillosa documentación. Permite establecer dependencias de acuerdo con ciertas condiciones ( http://docs.python-cerberus.org/en/stable/validation-rules.html#dependencies ) y ciertamente es tan simple para las necesidades básicas de validación de esquemas a las que se refiere como jsonschema, voluptuoso, etc..
Los campos anidados también son compatibles (en todas las bibliotecas con las que estoy familiarizado) y sus documentos de personalización son increíbles: http://docs.python-cerberus.org/en/stable/customize.html
Dicho esto, no baso esta respuesta en el uso de los tres paquetes propuestos, sino en el uso extensivo de jsonschema y en la lectura de suficiente documentación y recomendaciones sobre los otros dos.