1

我正在尝试使用 json.dumps() 将 python 对象打印为 json

该对象是来自 keystoneclient.v2_0.client 模块的租户对象。

如果我直接打印对象,我会得到:

<Tenant {u'description': u'', u'enabled': True, u'id': u'dea3061f17df49a1a22f105d5e9bc971', u'name': u'Tets Lab 01'}>

将其传递给 json.dumps 失败,即

my_tenant = keystone.tenants.get('dea3061f17df49a1a22f105d5e9bc971')
json.dumps(my_tenant)

该错误表明它不是可序列化文件“/usr/lib/python2.7/json/encoder.py”,第 178 行,默认 raise TypeError(repr(o) + " is not JSON serializable")

除了解析从对象返回的字符串之外,有没有人知道我是否可以轻松地将其转换为 JSON 输出?

4

2 回答 2

4

我最终浏览了以下代码: https ://github.com/openstack/python-keystoneclient

Tenant 类扩展了一个基础资源,它实现了一个 to_dict() 方法。这将返回 json 格式的数据。 https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/openstack/common/apiclient/base.py

my_tenant = keystone.tenants.get('dea3061f17df49a1a22f105d5e9bc971')
json.dumps(my_tenant.to_dict())
于 2015-03-11T14:21:57.703 回答
0

这应该做

json.dumps(vars(my_tenant))
于 2015-03-11T14:16:40.640 回答