我遇到了一个问题,我试图解析JSON中存在不止一次的id字符串。我正在使用一个来自json库的请求。我试图检索“id”的所有值,但只能成功地提取我定义的值。json示例:{
"apps": [{
"id": "app1",
"id": "app2",
"id": "new-app"
}]
}
因此,到目前为止,我所做的是将json响应转换为dictionary,以便实际解析“id”的第一次迭代。我曾尝试创建for循环,但在尝试查找字符串id或TypeError时遇到keyrerror:列表索引必须是整数或切片,而不是str。我唯一能成功做到的就是定义要输出的id位置。在
^{pr2}$
如果一次只有一个id字符串,但总是多个,并且位置会不时变化,那么这就可以了。在
那么如何从这个json输出中返回“id”的所有字符串的值呢?完整代码如下:import requests
url = "http://x.x.x.x:8080/v2/apps/"
response = requests.get(url)
#Error if not 200 and exit
ifresponse.status_code!=200:
print("Status:", response.status_code, "CheckURL.Exiting")
exit()
#Turn response into a dict and parse for ids
data = response.json()
for n in data:
print(data['apps'][0]['id'])
OUTPUT:
app1
更新:
多亏了Robᵩ才得以解决问题。我最后用的是:def list_hook(pairs):
result = {}
for name, value in pairs:
if name == 'id':
result.setdefault(name, []).append(value)
print(value)
data = response.json(object_pairs_hook = list_hook)
另外,我作为示例发布的API并不是真正的API。它只是一个视觉上的表现,我试图实现。我实际上在使用Mesosphere's Marathon API。尝试为端口映射容器构建一个python侦听器。在