Python中的JSON資料解析
問題:
問題:問題:
您從Facebook API接收JSON資料對象,並希望將其儲存在資料庫中。您目前正在使用的Django視圖以以下程式碼表示:
這可以正常運作,但您想知道如何處理複雜JSON資料物件。您希望有一種方法將該JSON物件轉換為Python物件以簡化使用。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)解決方案:
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在Python 3中,您可以使用SimpleNamespace和object_hook輕鬆完成此操作:
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)在Phon🎜>在Phon 2中,可以使用namedtuple和object_hook(但對於大量嵌套對象,此方法非常慢):要輕鬆重用此功能,可以使用以下程式碼:如果您希望它處理不是有效屬性名稱的鍵,請查看namedtuple的rename參數。
以上是如何將 JSON 資料轉換為 Python 物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!