从oddlynested Python中提取值

2024-04-18 06:08:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我一定很慢,因为我花了一整天的时间在google上搜索并试图编写Python代码,只列出“code”值,这样我的输出就会是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. 

Tags: to代码jsonindexversiongoogle时间code
3条回答

如果您不确定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"])

或者,如果你想要“代码”的东西:

>>> [s['code'] for s in somejson['offers'].values()]
['Service1', 'Service2', 'Service4']

somejson["offers"]是一本字典。好像你想打印它的钥匙。你知道吗

在Python 2中:

print(somejson["offers"].keys())

在Python 3中:

print([x for x in somejson["offers"].keys()])

在python3中必须使用列表理解,因为在python3中keys()是一个“视图”,而不是列表。你知道吗

相关问题 更多 >