ホームページ >バックエンド開発 >Python チュートリアル >JSON データをデータベース ストレージ用の Python オブジェクトに変換するにはどうすればよいですか?

JSON データをデータベース ストレージ用の Python オブジェクトに変換するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-08 08:14:02701ブラウズ

How to Transform JSON Data into Python Objects for Database Storage?

データベースストレージ用に JSON データを Python オブジェクトに変換する

シナリオ: Django アプリケーションは、保存する必要がある JSON データを Facebook API から受け取りますデータベース内で。現在、アプリケーションはカスタム ビューを使用して単純なデータ オブジェクトを処理していますが、複雑なデータ構造に苦労しています。

質問: データベースの保存と操作を容易にするために、JSON データを Python オブジェクトに変換するにはどうすればよいですか?

解決策: 高度なデータ構造を使用した JSON 解析

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。