How can I loop over a json array that looks like the one below, using python? {
"insights": {
"data": [
{
"name": "page_impressions",
"period": "day",
"values": [
{
"value": 14,
"end_time": "2022-05-16T07:00:00+0000"
},
{
"value": 17,
"end_time": "2022-05-17T07:00:00+0000"
}
],
"title": "Daily Total Impressions",
"description": "Daily: The number of times any content from your Page or about your Page entered a person's screen. This includes posts, stories, ads, as well other content or information on your Page. (Total Count)",
"id": "/insights/page_impressions/day"
},
{
"name": "page_impressions",
"period": "week",
"values": [
{
"value": 14,
"end_time": "2022-05-16T07:00:00+0000"
},
{
"value": 31,
"end_time": "2022-05-17T07:00:00+0000"
}
],
"title": "Weekly Total Impressions",
"description": "Weekly: The number of times any content from your Page or about your Page entered a person's screen. This includes posts, stories, ads, as well other content or information on your Page. (Total Count)",
"id": "/insights/page_impressions/week"
},
{
"name": "page_impressions",
"period": "days_28",
"values": [
{
"value": 14,
"end_time": "2022-05-16T07:00:00+0000"
},
{
"value": 31,
"end_time": "2022-05-17T07:00:00+0000"
}
],
"title": "28 Days Total Impressions",
"description": "28 Days: The number of times any content from your Page or about your Page entered a person's screen. This includes posts, stories, ads, as well other content or information on your Page. (Total Count)",
"id": "/insights/page_impressions/days_28"
}
]
I know how to loop over individual items:
values = profile['insights']['data'][0]['values'][0]
But this isn't a feasible solution considering that I need to loop over every item and display the output and store it. Any help would be appreciated.
How to iterate the json, this is one way you could do it:
Data:
test = {
"insights": {
"data": [
{
"name": "page_impressions",
"period": "day",
"values": [
{
"value": 14,
"end_time": "2022-05-16T07:00:00+0000"
},
{
"value": 17,
"end_time": "2022-05-17T07:00:00+0000"
}
],
"title": "Daily Total Impressions",
"description": "Daily: The number of times any content from your Page or about your Page entered a person's screen. This includes posts, stories, ads, as well other content or information on your Page. (Total Count)",
"id": "/insights/page_impressions/day"
},
{
"name": "page_impressions",
"period": "week",
"values": [
{
"value": 14,
"end_time": "2022-05-16T07:00:00+0000"
},
{
"value": 31,
"end_time": "2022-05-17T07:00:00+0000"
}
],
"title": "Weekly Total Impressions",
"description": "Weekly: The number of times any content from your Page or about your Page entered a person's screen. This includes posts, stories, ads, as well other content or information on your Page. (Total Count)",
"id": "/insights/page_impressions/week"
},
{
"name": "page_impressions",
"period": "days_28",
"values": [
{
"value": 14,
"end_time": "2022-05-16T07:00:00+0000"
},
{
"value": 31,
"end_time": "2022-05-17T07:00:00+0000"
}
],
"title": "28 Days Total Impressions",
"description": "28 Days: The number of times any content from your Page or about your Page entered a person's screen. This includes posts, stories, ads, as well other content or information on your Page. (Total Count)",
"id": "/insights/page_impressions/days_28"
}
]
}
}
Code:
for data in test["insights"]["data"]:
print(data["title"])
for value in data["values"]:
print(value)
Result:
Daily Total Impressions
{'value': 14, 'end_time': '2022-05-16T07:00:00+0000'}
{'value': 17, 'end_time': '2022-05-17T07:00:00+0000'}
Weekly Total Impressions
{'value': 14, 'end_time': '2022-05-16T07:00:00+0000'}
{'value': 31, 'end_time': '2022-05-17T07:00:00+0000'}
28 Days Total Impressions
{'value': 14, 'end_time': '2022-05-16T07:00:00+0000'}
{'value': 31, 'end_time': '2022-05-17T07:00:00+0000'}
If you need to unpack it even further:
for data in test["insights"]["data"]:
print(data["title"])
for val in data["values"]:
for key, value in val.items():
print(f"The value: [ {value} ]")
Result:
Daily Total Impressions
The value: [ 14 ]
The value: [ 2022-05-16T07:00:00+0000 ]
The value: [ 17 ]
The value: [ 2022-05-17T07:00:00+0000 ]
Weekly Total Impressions
The value: [ 14 ]
The value: [ 2022-05-16T07:00:00+0000 ]
The value: [ 31 ]
The value: [ 2022-05-17T07:00:00+0000 ]
28 Days Total Impressions
The value: [ 14 ]
The value: [ 2022-05-16T07:00:00+0000 ]
The value: [ 31 ]
The value: [ 2022-05-17T07:00:00+0000 ]