如何将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对象以方便使用,会不会更好呢?

回答:

你可以使用namedtuple和在一行中完成操作object_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)

如果你希望它处理不是好的属性名称的键,请查看namedtuplerename parameter

以上是 如何将JSON数据转换为Python对象 的全部内容, 来源链接: utcz.com/qa/430302.html

回到顶部