Exercices Projets guidés E-commerce #9 : Produit serialisable
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

E-commerce #9 : Produit serialisable

On etend la classe Produit avec la serialisation JSON. Le problème avec Decimal, c'est que json.dumps() ne sait pas le serialiser. La solution : convertir le prix en string dans to_dict(), ce qui preserve la precision exacte.

Exemple du problème :
json.dumps(Decimal('29.99')) # TypeError !
json.dumps(str(Decimal('29.99'))) # '"29.99"' -> OK

Ajoute a la classe Produit :
- to_dict() : retourne un dict avec le prix en string
- from_dict(cls, data) : reconstruit depuis un dict
- to_json() : retourne le JSON string via json.dumps(self.to_dict())
- from_json(cls, json_str) : reconstruit depuis un JSON string

Exemple :
p = Produit('Livre', Decimal('29.99'), 5)
j = p.to_json() # '{"nom": "Livre", "prix": "29.99", "stock": 5}'
p2 = Produit.from_json(j)
p2.prix # Decimal('29.99') (precision preservee)

Tests (2/4)

to_json
import json
from decimal import Decimal
p = Produit('Livre', Decimal('29.99'), 5)
d = json.loads(p.to_json())
assert d['nom'] == 'Livre' and d['prix'] == '29.99'
from_json
import json
from decimal import Decimal
p = Produit('X', Decimal('9.99'), 3)
p2 = Produit.from_json(p.to_json())
assert p2.nom == 'X' and p2.prix == Decimal('9.99')

+ 0 tests cachés

Indices (3 disponibles)

solution.py