Scénario : Une application Django reçoit des données JSON de l'API Facebook qui doivent être stockées dans une base de données. L'application gère actuellement des objets de données simples à l'aide d'une vue personnalisée, mais a du mal avec des structures de données complexes.
Question : Comment les données JSON peuvent-elles être transformées en objets Python pour faciliter le stockage et la manipulation de la base de données ?
Pour convertir des données JSON en objets Python, on peut utiliser des structures de données spécialisées telles que SimpleNamespace et nommétuple. Ces structures permettent de créer dynamiquement des attributs en fonction des clés de données JSON.
En Python3, SimpleNamespace peut être utilisé avec object_hook dans json.loads :
import json from types import SimpleNamespace data = '{"name": "John Smith", "hometown": {"name": "New York", "id": 123}}' # Parse JSON into an object with attributes corresponding to dict keys. x = json.loads(data, object_hook=lambda d: SimpleNamespace(**d)) print(x.name, x.hometown.name, x.hometown.id)
En Python2, Namedtuple peut être utilisé de la même manière :
import json from collections import namedtuple data = '{"name": "John Smith", "hometown": {"name": "New York", "id": 123}}' # Parse JSON into an object with attributes corresponding to dict keys. x = json.loads(data, object_hook=lambda d: namedtuple('X', d.keys())(*d.values())) print x.name, x.hometown.name, x.hometown.id
Alternativement, une fonction réutilisable peut être définie pour simplifier le processus :
def _json_object_hook(d): return namedtuple('X', d.keys())(*d.values()) def json2obj(data): return json.loads(data, object_hook=_json_object_hook) x = json2obj(data)
En utilisant ces techniques, des données JSON complexes peuvent être converties efficacement en objets Python, ce qui facilite leur stockage et leur manipulation dans une base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!