Доступ к вложенным значениям JSON с помощью Python - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь получить доступ к вложенному значению JSON, используя Python.

Вот выдержка из моего JSON:

    {
  "data": [
    {
      "name": "page_video_views",
      "period": "day",
      "values": [
        {
          "value": 634,
          "end_time": "2018-11-23T08:00:00+0000"
        },
        {
          "value": 465,
          "end_time": "2018-11-24T08:00:00+0000"
        }
      ],
      "title": "Daily Total Video Views",
      "description": "Daily: Total number of times videos have been viewed for more than 3 seconds. (Total Count)",
      "id": "{page-id}/insights/page_video_views/day"
    },

Вот код, который я написал до сих пор:

import json
import urllib.request

data = urllib.request.urlopen("https://graph.facebook.com/v3.1/{page-id}/insights?access_token={access-token}&pretty=0&metric=page_impressions%2cpage_engaged_users%2cpage_fans%2cpage_video_views%2cpage_posts_impressions").read()

output = json.loads(data)

print(json.dumps(output, indent=2))

for item in output['data']:
    name = item['name']
    period = item['period']
    value = item['data']['values']['value']

    print(name, period, value)

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когдаЯ запускаю код для доступа к «name» и «period», он прекрасно работает, но я не могу получить доступ к «value» в «values».Я полагаю, что это потому, что есть два «полезных» результата, и я бы хотел каждый раз получать первый.

Спасибо за помощь

1 Ответ

0 голосов
/ 27 ноября 2018

item['data']['values'] - это список.Вам нужно получить его первый элемент и только затем получить доступ к его полю 'value'.То есть соответствующая строка должна быть:

value = item['data']['values'][0]['value']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...