如何打印python openstack对象作为json

时间:2015-03-11 14:09:38

标签: python json openstack keystone

我尝试使用json.dumps()将jthon对象打印为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)

错误表明它不可序列化   文件&#34; /usr/lib/python2.7/json/encoder.py" ;,第178行,默认情况下     引发TypeError(repr(o)+&#34;不是JSON可序列化的&#34;)

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

2 个答案:

答案 0 :(得分: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())

答案 1 :(得分:0)

这应该做

json.dumps(vars(my_tenant))