繁体   English   中英

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

[英]Python: Extract specific data from a very large JSON request

我试图从一个很大的JSON请求中提取ID和相应的名称,我的脚本卡在了终端中。 我已经等了十多分钟,什么都没有,甚至没有错误。 理想情况下,我只想返回我事先提供的给定名称列表的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()不是获取名为idname项的正确方法。 而且,这些项目不是json响应的直接成员; 它们是results列表中子项目的成员。

请尝试以下代码:

resp = requests.get(url=url, headers=headers)
data = resp.json()
for result in data['results']:
    print(result['id'], ':', result['name'])

您必须遍历结果值(JSON数组)。 因此,请执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM