Abhishek Dey
Abhishek Dey

Reputation: 175

Python - Cerberus, jsonschema, voluptous - Which one will be appropriate?

I am developing a small RESTful web application in python and using JSON as interface. The application accepts JSON data and needs to validate them against a schema. The schema may be very strict or flexible depending on the request. Also, the application may need to validate user objects at a later improvement.

I have found some suggestions in stack overflow as well as at other websites. Those include

But could not find a proper comparison.

In terms of simplicity, flexibility and extend-ability, which one do you think should I choose?

Cerberus seems to be very flexible and extend-ability seems very good from their documentation and examples. But I don't know about the other libraries.

EDIT 1: For now the application's needs are pretty simple and a basic schema validation with scope for adding custom types and custom validation rules will suffice. So if all these libraries offer the basic requirements, I would go for the one that is simplest to use. Also I am open to other suggestions if any.

Hoping to find some help.

Upvotes: 17

Views: 7579

Answers (1)

nir0s
nir0s

Reputation: 1171

I would take Cerberus then if only for its wonderful documentation. It allows to set dependencies according to certain conditions (http://docs.python-cerberus.org/en/stable/validation-rules.html#dependencies) and is certainly as simple for the basic schema validation needs you're referring to as jsonschema, voluptuous, etc..

Nested fields are supported also (in all libraries i'm familiar with) and their customization docs are amazing: http://docs.python-cerberus.org/en/stable/customize.html

That being said, I'm not basing this answer on using all three proposed packages but rather on using jsonschema extensively and reading enough documentation and recommendations on the other two.

Upvotes: 9

Related Questions