从JSON访问嵌套字典

时间:2018-06-27 17:41:40

标签: python json python-requests

回答:在底部回答。

我正在使用请求和json从API中提取一些数据,并且正在努力使用嵌套字典。

这是我的JSON。

"data": [
    {
      "ContactId": "123",
      "EmailAddress": "abc@xyz.com",
      "FirstName": null,
      "LastName": null,
      "ClickDate": "6/6/1966",
      "Clicks": "5",
      "IPAddress": "1.1.1.1.1",
      "UserAgent": "IE8.0",
      "UniqueLinksClicked": [
        {
          "LinkURL": "http://link1.com",
          "LinkURL": "http://link2.com",
          "LinkURL": "http://link3.com"
        }
      ]
    }

我可以很好地访问所有ContactID和其他第一级内容,但我不知道如何遍历“ LinkURL”内容。

这是我的蟒蛇...

result = requests.get(requesturl, headers=headers)
jdata = json.loads(result.content)
for result in jdata["data"]:
    contactID = str([(result["ContactId"])])
    for result in jdata["data"]["UniqueLinksClicked"]: #I'm doing this wrong, but I'm not sure how.
    print(ContactID + " " + str([(result["LinkURL"])]))

它告诉我,当我需要将“ UniqueLinksClicked”作为列表时,将其作为列表进行处理。如何正确执行此操作?

编辑:

尝试使用此for link in jdata["data"]["UniqueLinksClicked"]:时会出错,提示您正在等待列表。

尝试使用此for link in jdata["UniqueLinksClicked"]:会产生关键错误,因为["UniqueLinksClicked"]["data"]字典中的一项。

Edit2:

我对for variable1 in variable2["dict"]:部分中的变量命名感到困惑。在从下面得到一些帮助之后,我知道了。

应该看起来像这样...

for item in jdata["data"]:
    contactID = str([(item["ContactId"])])
    print(contactID)
    for link in item["UniqueLinksClicked"]:
        print(link["LinkURL"])

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以在嵌套循环中遍历链接。不要在两个嵌套循环中使用相同的变量名result!在内部循环中使用其他变量名称。

for link in result["UniqueLinksClicked"]: 
    print(ContactID, link["LinkURL"])