Ответил: Ответ внизу.
Я использую запросы и json для извлечения некоторых данных из API, и я борюсь с использованием вложенного dict.
Вот мой 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 и другим вещам 1-го уровня, но я не могу понять, как пройти через "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» как список, когда он мне нужен как диктат. Как мне сделать это правильно?
Edit:
Попытка этого for link in jdata["data"]["UniqueLinksClicked"]:
выдает ошибку, говорящую, что он ожидает список.
Попытка этого for link in jdata["UniqueLinksClicked"]:
приводит к ключевой ошибке, поскольку ["UniqueLinksClicked"]
является элементом внутри ["data"]
dict.
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"])
Спасибо за помощь.