我的目标是遍历JSON响应,获取两个值,并构建一个API调用来将信息加载到POST中,从而创建我正在构建的策略。
首先,我尝试从一个JSON响应中获取两个值,并将其赋值为变量以构建POST调用,这将是第二步。由于分配了不同的"id“和"name”键,因此我想构建一个JSON有效负载,并一次发送一个POST调用。键"id“和"name”在响应负载中多次出现,我在捕获这两个键时遇到了问题。
JSON响应
data = {
"data":[
{
"id":"02caf2be-3245-4d3d",
"name":"ORA-FIN-ACTG",
"description":"Oracle",
"links":{
"web":"https://com/",
"api":"https://com/"
}
},
{
"id":"03af2f46-fad6-41a1",
"name":"NBCMAINFRAME",
"description":"Network",
"links":{
"web":"https://com/",
"api":"https://com/"
}
},
{
"id":"0649628b-0e3b-48df",
"name":"CAMS",
"description":"Customer",
"links":{
"web":"https://com/",
"api":"https://com/"
}
},
{
"id":"069d4bcf-3e50-4105",
"name":"SHAREPOINTSITES",
"description":"Sharepoint",
"links":{
"web":"https://com/",
"api":"https://com/"
}
}
],
"took":0.013,
"requestId":"1f364470"}
我尝试了各种"for循环“来获取数据。下面是其中一个循环:
data = json.loads(data)
data[0]['data'][0]['name']
for item in range(len(data)):
print(data[item]['data'][0]['name'])我也试着把它当做字典来读:
for data_dict in data:
for key, value in data_dict.items():
team.append(key)
id.append(value)
print('name = ', team)
print('id = ', id)我还得到了KeyError和TypeError: JSON对象必须是字符串、字节或字节数组,而不是'dict‘。
任何帮助都是非常感谢的。
仅供参考,这是我想用"name“和"id”值填充的有效负载:
data= {
"type":"alert",
"description":"policy",
"enabled":"true",
"filter":{
"type":"match-any-condition",
"conditions":[
{
"field":"extra-properties",
"key":"alertOwner",
"operation":"equals",
"expectedValue":name
}
]
},
"ignoreOriginalResponders": "true",
"ignoreOriginalTags": "true",
"continue": "true",
"name": str(name) + " Policy",
"message":"{{message}}",
"responders":[{"type":"team","id":id}],
"alias":"{{alias}}",
"tags":["{{tags}}"],
"alertDescription":"{{description}}"
}发布于 2021-04-29 01:57:02
您给出的JSON响应已经是一个字典,因此不需要使用json.loads。多项列表实际上嵌套在data键下。因此,您可以简单地迭代项目数组,如下所示:
for item in data["data"]:
print("{} : {}".format(item["id"],item["name"]))这是输出:
02caf2be-3245-4d3d : ORA-FIN-ACTG
03af2f46-fad6-41a1 : NBCMAINFRAME
0649628b-0e3b-48df : CAMS
069d4bcf-3e50-4105 : SHAREPOINTSITEhttps://stackoverflow.com/questions/67305209
复制相似问题