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

Linda Hamilton
リリース: 2024-11-10 01:10:02
オリジナル
203 人が閲覧しました

How to Convert JSON Data to Python Objects?

Python での JSON データ解析

質問:

JSON データを Python に変換する方法オブジェクト?

背景:

Facebook API から JSON データ オブジェクトを受け取り、それをデータベースに保存したいと考えています。現在使用している Django ビューは、次のコードで表されます:

response = request.POST
user = FbApiUser(user_id = response['id'])
user.name = response['name']
user.username = response['username']
user.save()
ログイン後にコピー

これは正常に動作しますが、複雑な JSON データ オブジェクトを処理する方法を知りたいと考えています。使いやすくするために、その JSON オブジェクトを Python オブジェクトに変換する方法があればいいのにと思います。

解決策:

Python 3 では、SimpleNamespace と object_hook を使用してこれを簡単に実行できます。

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)
ログイン後にコピー

Python 2 では、namedtuple を使用できます。

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
ログイン後にコピー

この関数を簡単に再利用するには、次のコードを使用できます。

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)
ログイン後にコピー

有効なプロパティ名ではないキーを処理したい場合は、namedtuple の rename パラメータを確認してください。

以上がJSON データを Python オブジェクトに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート