Outils pour utilisateurs

Outils du site


dev:python:core:serialisation_json

:TODO_DOCUPDATE:

Sérialiser un type(classe) quelconque en JSON

Si on tente de sérialiser directement une instance d'une classe de son cru via le module json on obtient en général une erreur :

Dans cet exemple le type Memo est une Classe complexe conçue pour une application Flask et permettant d'enregistrer les données dans une base via l'ORM SQLAlchemy

>>> import json
 
>>> # On enregistre deux objets de type Memo dans la base
>>> db.session.add(Memo("toto", 10, 10))
>>> db.session.add(Memo("tata", 33, 20))
>>> db.session.commit()
 
>>> # On récupère tous les mémos sour forme de liste
>>> memos = Memo.query.all()
 
 
>>> type(memos)
<class 'list'>
>>> type(memos[0])
<class 'fairymaps.models.Memo'>
 
>>> # La sérialisation directe de la liste échoue :

Une façon simple de permettre la sérialisation est de définir une méthode to_json() dans votre classe. La méthode doit retourner un dictionnaire avec des valeurs scalaires (simples ou types de base)

Références

dev/python/core/serialisation_json.txt · Dernière modification : 2024/11/21 16:27 de yoann