Спецификация печати c Значение из запроса API в Python - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь распечатать значения из запроса API. Возвращенный файл JSON большой (4000 строк), поэтому я просто пытаюсь получить конкретные c значения из пары ключ-значение и автоматизировать сообщение.

Вот что у меня есть на данный момент:

import requests
import json
import urllib


url = "https://api.github.com/repos/<companyName>/<repoName>/issues" #url 

payload = {}
headers = {
  'Authorization': 'Bearer <masterToken>' #authorization works fine 
}
name = (user.login) #pretty sure nothing is being looked out
url = (url)

print(hello %name, you have a pull request to view. See here %url for more information) # i want to print those keys here

Файл JSON (экспортируется из запроса на получение API, выглядит следующим образом:

[
    {
        **"url": "https://github.com/<ompanyName>/<repo>/issues/1000",**
        "repository_url": "https://github.com/<ompanyName>/<repo>",
        "labels_url": "https://github.com/<ompanyName>/<repo>/issues/1000labels{/name}",
        "comments_url": "https://github.com/<ompanyName>/<repo>/issues/1000",
        "events_url": "https://github.com/<ompanyName>/<repo>/issues/1000",
        "html_url": "https://github.com/<ompanyName>/<repo>/issues/1000",
        "id": <id>,
        "node_id": "<nodeID>",
        "number": 702,
        "title": "<titleName>",
        "user": {
            **"login": "<userName>",**
            "id": <idNumber>,
            "node_id": "nodeID",
            "avatar_url": "https://avatars3.githubusercontent.com/u/urlName?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/<userName>",
            "html_url": "https://github.com/<userName>",
            "followers_url": "https://api.github.com/users/<userName>/followers",
            "following_url": "https://api.github.com/users/<userName>/following{/other_user}",
            "gists_url": "https://api.github.com/users/<userName>/gists{/gist_id}",
            "starred_url": "https://api.github.com/users/<userName>/starred{/owner}{/repo}",
            "subscriptions_url": "https://api.github.com/users/<userName>/subscriptions",
            "organizations_url": "https://api.github.com/users/<userName>/orgs",
            "repos_url": "https://api.github.com/users/<userName>/repos",
            "events_url": "https://api.github.com/users/<userName>/events{/privacy}",
            "received_events_url": "https://api.github.com/users/<userName>/received_events",
            "type": "User",
            "site_admin": false
        },
]

(обратите внимание, что этот файл JSON повторяется несколько сотен раз) Из запроса API, Я пытаюсь получить вложенный логин и URL. Что мне не хватает? Спасибо

Изменить:

Решено:

import requests
import json
import urllib


url = "https://api.github.com/repos/<companyName>/<repoName>/issues"

payload = {}
headers = {
  'Authorization': 'Bearer <masterToken>'
}

response = requests.get(url).json()
for obj in response:
    name = obj['user']['login']
    url = obj['url']
    print('Hello {0}, you have an outstanding ticket to review. For more information see here:{1}.'.format(name,url))

Ответы [ 3 ]

0 голосов
/ 28 мая 2020

Поскольку это массив JSON, вам нужно наложить на него l oop. А объекты JSON преобразуются в словари, поэтому для доступа к элементам вы используете ['key'].

for obj in response:
    name = obj['user']['login']
    url = obj['url']
    print(f'hello {name}, you have a pull request to view. See here {url} for more information')
0 голосов
/ 28 мая 2020

Вы можете преобразовать данные в формате JSON в словарь Python следующим образом: https://www.w3schools.com/python/python_json.asp

json_data = ... # response from API
dict_data = json.loads(json_data)

login = response[0]['user']['login']
url = response[0]['url']
0 голосов
/ 28 мая 2020

вы можете разобрать его в python списки / словари, а затем получить к нему доступ, как к любому другому объекту python.


response = requests.get(...).json()

login = response[0]['user']
...