Skip to main content
 首页 » 编程设计

Python:从非常大的 JSON 请求中提取特定数据

2025年05月04日21zfyouxi

我试图从一个非常大的 JSON 请求中提取 ID 和相应的名称,但我的脚本卡在了终端中。我已经等了 10 多分钟了,什么也没有,甚至没有错误。 理想情况下,我只想返回我预先提供的给定名称列表的 ID。 这是我的 JSON x1000s 的样子:

{ 
     "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 
     ] 
} 

这是我到目前为止所做的,但我什至没有机会查看它是否有效,因为我没有得到任何结果或错误:

resp = requests.get(url=url, headers=headers) 
for id, name in resp.json(): 
    print (id, ':', name) 

你们能帮我解决这个问题吗?谢谢。

编辑:我又试了几次,这次我收到错误“发生异常:ValueError 太多值无法解压(预期 2)”

请您参考如下方法:

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'])