python - 如何将JSON数据转换为Python对象

我想使用python将JSON数据转换为python对象。
我从Facebook API接收JSON数据对象,我想将其存储在我的数据库中。
Django(python)中的当前视图(request.POST包含json):

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

这很好,但是如何处理复杂的JSON数据对象呢?
如果我能以某种方式将这个JSON对象转换成一个易于使用的Python对象,那不是更好吗?


最佳答案:

您可以在一行中使用namedtupleobject_hook

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)

如果希望它处理不好的属性名的键,请签出namedtuplesrename parameter

评论