Taggué : json

JSON Schema

JSON Schema permet de définir vos formats de données JSON et permet de les valider. C’est assez pratique pour gérer la validation des données d’une API par exemple. Je m’en sert par exemple pour valider des données avant de les insérer dans une base MongoDB.

Il existe des implémentations pour quasiment tous les langages. J’ai utilisé par exemple jsonschema pour Python : https://github.com/Julian/jsonschema

C’est assez souple à utiliser et on peut étendre facilement les fonctionnalités. Par exemple pour valider un champ objectid, qui est le type de données par défaut utilisé par MongoDB pour stocker les id :

from bson.objectid import ObjectId
from jsonschema import Draft4Validator, validate, ValidationError, SchemaError

def json_validator(schema):

    types = {"objectid" : ObjectId}
    validator = Draft4Validator(
        schema=schema,
        types=types
    )
    return validator

validator = json_validator({"_id": "objectid"})
json_data = {"_id": ObjectId("51f4ac14261caf41e8485ce9")}
if validator.is_valid(json_data):
    # ...
else:
    for error in sorted(validator.iter_errors(json_data), key=str):
        print('{} : {}'.format(schema_path_str(error.path), error.message))