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 行目、デフォルトでは 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 に答える