我们如何用字符串api输出创建一个字典,如下所示:
API输出:
{
"id":"group_cluster"
,"Fields":{
"SIZE":0
,"REBALANCE":"AUTO"
,"REPLICAS":"1"
,"MODEL":"PARTICIPANT"
,"MODEL_FACTORY_NAME":"group_cluster"
}
,"Fields":{
}
,"mapping":{
"group_0":{
"station08.example.com_98559":"PARTICIPANT"
}
,"group_1":{
"station19.example.com_98559":"PARTICIPANT"
}
,"group_2":{
"station31.example.com_98559":"PARTICIPANT"
}
,"group_3":{
"station44.example.com_98559":"PARTICIPANT"
}
}
想用上面的字符串编一本字典。
即。
{
'group_0': 'station08.example.com_98559',
'group_1': 'station19.example.com_98559',
'group_2': 'station31.example.com_98559
}
我试着玩json模块,结果得到了:
In: import json
In: d=json.loads(data)
In: d
Out:
{u'id': u'group_cluster',
u'Fields': {},
u'mapping': {u'group_0': {u'station08.example.com_98559': u'PARTICIPANT'},
u'group_1': {u'station19.example.com_98559': u'PARTICIPANT'},
u'group_2': {u'station31.example.com_98559': u'PARTICIPANT'},
u'group_3': {u'station44.example.com_98559': u'PARTICIPANT'},
u'group_4': {u'station73.example.com_98559': u'PARTICIPANT'},
u'group_5': {u'station88.example.com_98559': u'PARTICIPANT'},
u'group_6': {u'station74.example.com_98559': u'PARTICIPANT'},
u'group_7': {u'station77.example.com_98559': u'PARTICIPANT'}},
u'Fields': {u'SIZE': u'0',
u'ENABLED': u'true',
u'STATE_MODE': u'AUTO',
u'REBALANCE': u'AUTO',
u'REPLICAS': u'1',
u'MODEL': u'PARTICIPANT',
u'MODEL_FACTORY_NAME': u'group_cluster'}}
In : for i,k in d.items():
for e,f in k.items():
for j in f.iteritems():
print j[0],e
.....:
station31.example.com_98559 group_2
station44.example.com_98559 group_3
station08.example.com_98559 group_0
station19.example.com_98559 group_1
station74.example.com_98559 group_6
station77.example.com_98559 group_7
station73.example.com_98559 group_4
station88.example.com_98559 group_5
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-258-418baa8a7a16> in <module>()
1 for i,k in d.items():
2 for e,f in k.items():
----> 3 for j in f.iteritems():
4 print j[0],e
5
AttributeError: 'unicode' object has no attribute 'iteritems'
得到了解决方案:
for i,k in d.items():
if type(k)==dict:
for e,f in k.items():
if type(f)==dict:
for j in f.iteritems():
print j[0],e