首頁  >  文章  >  後端開發  >  如何將 JSON 資料轉換為 Python 物件?

如何將 JSON 資料轉換為 Python 物件?

Linda Hamilton
Linda Hamilton原創
2024-11-10 01:10:02203瀏覽

How to Convert JSON Data to Python Objects?

Python中的JSON資料解析

問題:

問題:

問題:

response = request.POST user = FbApiUser(user_id = response['id']) user.name = response['name'] user.username = response['username'] user.save()

背景:

您從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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn