シナリオ: Django アプリケーションは、保存する必要がある JSON データを Facebook API から受け取りますデータベース内で。現在、アプリケーションはカスタム ビューを使用して単純なデータ オブジェクトを処理していますが、複雑なデータ構造に苦労しています。
質問: データベースの保存と操作を容易にするために、JSON データを Python オブジェクトに変換するにはどうすればよいですか?
JSON データを Python オブジェクトに変換するには、SimpleNamespace やnamedtuple などの特殊なデータ構造を使用できます。これらの構造により、JSON データ キーに基づいて属性を動的に作成できます。
Python3 では、json.loads の object_hook で SimpleNamespace を使用できます。
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)
Python2 では、namedtuple を次のように使用できます。同様に使用します:
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
または、プロセスを簡素化するために再利用可能な関数を定義できます:
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)
これらの手法を使用すると、複雑な JSON データを Python オブジェクトに効率的に変換できます。データベースへの保存と操作が簡単になります。
以上がJSON データをデータベース ストレージ用の Python オブジェクトに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。