JSON-Datenanalyse in Python
Frage:
So konvertieren Sie JSON-Daten in Python Objekte?
Hintergrund:
Sie erhalten ein JSON-Datenobjekt von der Facebook-API und möchten es in einer Datenbank speichern. Die Django-Ansicht, die Sie derzeit verwenden, wird durch den folgenden Code dargestellt:
response = request.POST user = FbApiUser(user_id = response['id']) user.name = response['name'] user.username = response['username'] user.save()
Das funktioniert gut, aber Sie möchten wissen, wie man mit komplexen JSON-Datenobjekten umgeht. Sie wünschten, es gäbe eine Möglichkeit, dieses JSON-Objekt zur einfacheren Verwendung in ein Python-Objekt zu konvertieren.
Lösung:
In Python 3 können Sie dies ganz einfach mit SimpleNamespace und object_hook tun:
import json from types import SimpleNamespace data = '{"name": "John Smith", "hometown": {"name": "New York", "id": 123}}' # 将JSON解析为带有对应于dict键的属性的对象。 x = json.loads(data, object_hook=lambda d: SimpleNamespace(**d)) print(x.name, x.hometown.name, x.hometown.id)
In Python 2 können Sie „namedtuple“ und „object_hook“ verwenden (diese Methode ist jedoch für eine große Anzahl verschachtelter Objekte sehr langsam):
import json from collections import namedtuple data = '{"name": "John Smith", "hometown": {"name": "New York", "id": 123}}' # 将JSON解析为带有对应于dict键的属性的对象。 x = json.loads(data, object_hook=lambda d: namedtuple('X', d.keys())(*d.values())) print x.name, x.hometown.name, x.hometown.id
Um diese Funktion einfach wiederzuverwenden, können Sie den folgenden Code verwenden:
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)
Das obige ist der detaillierte Inhalt vonWie konvertiere ich JSON-Daten in Python-Objekte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!