【问题标题】:Checking whether a JSON dictionary is empty or not and storing in a list检查 JSON 字典是否为空并存储在列表中
【发布时间】:2016-04-26 10:06:58
【问题描述】:

我有一个 Instagram API,我将其加载到 JSON 中。响应正常,我什至可以从收到的数据中获取 id。然后我将其保存在 python 列表中,并使用 openpyxl 将其放入 Excel 工作表中。

这就是问题所在。加载值时,如果在删除 instagram 帐户的情况下没有来自 API 的响应,其中 JSON 将为空,我想将“ACC 已删除”存储在列表中。

(注意:- 我也提到了类似的问题,但没有得到我的答案。)

代码如下:

for r in range(1,51):
    var=r,test.cell(row=r,column=1).value
    xy=var[1]
    myopener=Myopener()
    url=myopener.open('https://api.instagram.com/v1/users/search?q='+xy+'&count=1&access_token=641567093.1fb234f.a0ffbe574e844e1c818145097050cf33')

    **beta=json.load(url)
    for item in beta['data']:
        list.append(item['id'])** //*HERE I WANT THE CHANGE*


    for j in range(len(list)):
        for row in sheet.iter_rows(min_row=j+1, max_row=j+1):
            for cell in row:
                cell.value=list[j]
                wb.save('sample.xlsx')

json 响应是这样的:

{
"meta":  {
"code": 200
},
"data":  [
 {
  "username": "rawhawk_sk",
  "profile_picture": "https://scontent.cdninstagram.com/t51.2885-19/s150x150/12724928_109384759877664_1105313598_a.jpg",
  "id": "670907103",
  "full_name": "shwan mcswan"
}
]
}

如果json响应如下所示为空,如何在列表中存储“ACC已删除”?

{
"meta":  {
"code": 200
},
"data":  []
} 

【问题讨论】:

    标签: python json loops instagram-api


    【解决方案1】:

    您可以检查脚本中的数据是否为空,如果是,则在列表中添加一个新条目“ACC 已删除”。

    import json
    
    jsons = []
    jsons.append("""{
    "meta":  {
    "code": 200
    },
    "data":  [
     {
      "username": "rawhawk_sk",
      "profile_picture": "https://scontent.cdninstagram.com/t51.2885-19/s150x150/12724928_109384759877664_1105313598_a.jpg",
      "id": "670907103",
      "full_name": "shwan mcswan"
    }
    ]
    }
    """)
    
    jsons.append("""{
    "meta":  {
    "code": 200
    },
    "data":  []
    } """)
    
    output_list = []
    
    for txt in jsons:
        beta = json.loads(txt)
        if beta.get('data'):
            for item in beta['data']:
                output_list.append(item['id'])
        else:
            output_list.append('ACC deleted')
    
    print(output_list)
    

    【讨论】:

    • 我认为你没有得到正确的问题@Ashafix。我想将“Acc deleted”存储在列表(“list”)中,当来自 API 的响应类似于上面的空 json 时,我会在其中附加数据。
    • 我试过了。这是不对的。 Json 正在跳过空字典并获取下一个结果,然后将其放入列表中。
    • 您能说得更具体一点吗?问题中提供的代码不是最小的工作代码,因此很难猜测还会发生什么。我的回答中的代码 sn-p 只是检查 JSON 中的数据字段是否为空,如果是,则将“ACC 删除”添加到列表中。
    • 哦!对不起。好吧,我想要你提到的确切的东西。检查数据字段是否为空的代码,如果是,则将“ACC 删除”附加到列表中。您提供的代码 sn-p 不会发生这种情况。让我解释。正如您在第一个代码中看到的那样,json 加载 URL 并将其存储在一个名为“beta”的变量中 从 JSON 模式中,如果 URL 响应将 JSON 作为我提供的第三个代码 sn-p 给出,它应该附加列表中的“ACC 已删除”(“列表”)
    • 我用您的空 JSON 响应尝试了它,在这种情况下,它会将“ACC 已删除”附加到列表中。
    猜你喜欢
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 2019-02-13
    • 1970-01-01
    • 2011-04-23
    • 2012-06-15
    相关资源
    最近更新 更多