Valider un objet Python par rapport à un schéma JSON

Le 9 septembre 2022
json object
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Importation de la bibliothèque pour la validation des schémas JSON
import jsonschema

# Définition du schéma pour un objet
objet_schema = {
    "type": "object",
    "properties": {
        "nom": {"type": "string"},
        "age": {"type": "integer"},
        "email": {"type": "string", "format": "email"},
        "telephone": {"type": "string", "pattern": "^[0-9]{10}$"},
        "adresse": {"type": "object", "properties": {
            "rue": {"type": "string"},
            "ville": {"type": "string"},
            "pays": {"type": "string"}
            }
        },
        "notes": {
            "type": "array",
            "items": {"type": "string"}
        }
    },
    "required": ["nom", "age"]
}

# Définition d'un objet qui correspond au schéma
objet_valide = {
    "nom": "Jean",
    "age": 30,
    "email": "jean@example.com",
    "telephone": "0123456789",
    "adresse": {
        "rue": "123 rue des fleurs",
        "ville": "Paris",
        "pays": "France"
    },
    "notes": ["note 1", "note 2"]
}

# Vérification de l'objet par rapport au schéma
try:
    jsonschema.validate(instance=objet_valide, schema=objet_schema)
    print("L'objet est valide !")
except jsonschema.exceptions.ValidationError as e:
    print(e)

Ce script utilise la bibliothèque jsonschema pour valider un objet Python par rapport à un schéma JSON. Le schéma est défini comme un dictionnaire Python, qui décrit la structure attendue de l’objet. Dans cet exemple, l’objet doit avoir un nom et un âge, et peut avoir un email, un numéro de téléphone, une adresse et des notes. L’adresse est elle-même un objet avec une rue, une ville et un pays, et les notes sont une liste de chaînes de caractères.

Le script définit également un objet valide qui correspond au schéma, puis utilise la méthode validate de la bibliothèque jsonschema pour vérifier que l’objet est conforme au schéma. Si l’objet n’est pas valide, une exception ValidationError est levée et affichée à l’utilisateur. Sinon, le script affiche simplement “L’objet est valide !” à l’écran.