我试图从一个很大的JSON请求中提取ID和相应的名称,我的脚本卡在了终端中。我已经等了十多分钟,什么都没有,甚至没有错误。 理想情况下,我只想返回我事先提供的给定名称列表的ID。 这是我的JSON看起来像x1000s的样子:
undefined
这是我到目前为止所做的,但是我什至没有机会查看它是否有效,因为我没有得到任何结果或错误:
{
"results":[
{
"id" : "156756",
"advertiser_id" : "taboola-demo-advertiser",
"name" : "Demo Campaign1",
"tracking_code" : "taboola-track",
"cpc" : 0.25,
"daily_cap" : 100,
"spending_limit" : 1000,
"spending_limit_model": "MONTHLY",
"country_targeting": {
"type" : "INCLUDE",
"value" : ["AU", "GB"]
}
},
{
"id" : "756862",
"advertiser_id" : "taboola-demo-advertiser",
"name" : "Demo Campaign2",
"tracking_code" : "taboola-track",
"cpc" : 0.25,
"daily_cap" : 100,
"spending_limit" : 1000,
"spending_limit_model": "MONTHLY",
"country_targeting": {
"type" : "INCLUDE",
"value" : ["AU", "GB"]
}
},
// … more results
]
}
请帮我解决这个问题?谢谢。
编辑:我尝试了几次,这次我收到错误消息:“发生了异常:ValueError值太多,无法解包(预期2)”
答案 0 :(得分:4)
for id, name in resp.json()
是获取名为id
和name
的项目的正确方法。而且,这些项目不是json响应的直接成员;它们是results
列表中子项目的成员。
请尝试以下代码:
resp = requests.get(url=url, headers=headers)
data = resp.json()
for result in data['results']:
print(result['id'], ':', result['name'])
答案 1 :(得分:1)
您必须遍历结果值(JSON数组)。因此,请执行以下操作:
resp = requests.get(url=url, headers=headers)
for element in resp.json().results:
print (element.id, ':', element.name)