我一定很慢,因为我花了一整天的谷歌搜索并试图编写Python代码只是简单地列出“代码”值,所以我的输出将是Service1,Service2,Service2。我之前从复杂的json或dict结构中提取了json值。但是现在我必须遇到心理障碍。
这是我的json结构。
myjson='''
{
"formatVersion" : "ABC",
"publicationDate" : "2017-10-06",
"offers" : {
"Service1" : {
"code" : "Service1",
"version" : "1a1a1a1a",
"index" : "1c1c1c1c1c1c1"
},
"Service2" : {
"code" : "Service2",
"version" : "2a2a2a2a2",
"index" : "2c2c2c2c2c2"
},
"Service3" : {
"code" : "Service4",
"version" : "3a3a3a3a3a",
"index" : "3c3c3c3c3c3"
}
}
}
'''
#convert above string to json
somejson = json.loads(myjson)
print(somejson["offers"]) # I tried so many variations to no avail.
答案 0 :(得分:2)
或者,如果你想要“代码”的东西:
>>> [s['code'] for s in somejson['offers'].values()]
['Service1', 'Service2', 'Service4']
答案 1 :(得分:0)
somejson["offers"]
是一本字典。看来你想打印它的钥匙。
在Python 2中:
print(somejson["offers"].keys())
在Python 3中:
print([x for x in somejson["offers"].keys()])
在Python 3中,您必须使用列表推导,因为在Python 3中keys()
是一个'视图'而不是列表。
答案 2 :(得分:0)
如果您不确定json中的服务数量,这应该可以解决问题。
import json
myjson='''
{
"formatVersion" : "ABC",
"publicationDate" : "2017-10-06",
"offers" : {
"Service1" : {
"code" : "Service1",
"version" : "1a1a1a1a",
"index" : "1c1c1c1c1c1c1"
},
"Service2" : {
"code" : "Service2",
"version" : "2a2a2a2a2",
"index" : "2c2c2c2c2c2"
},
"Service3" : {
"code" : "Service4",
"version" : "3a3a3a3a3a",
"index" : "3c3c3c3c3c3"
}
}
}
'''
#convert above string to json
somejson = json.loads(myjson)
#Without knowing the Services:
offers = somejson["offers"]
keys = offers.keys()
for service in keys:
print(somejson["offers"][service]["code"])