【发布时间】:2020-10-14 04:31:20
【问题描述】:
我正在尝试将 GraphQL 查询的输出作为 JSON 进行迭代,并创建一个包含该信息的 Python dicts 列表(“项目”变量)。这是我到目前为止一直在使用的代码:
url = 'https://api.github.com/graphql'
api_token = 'API_TOKEN'
headers = {'Authorization': 'token %s' % api_token}
# Parse Output
r = requests.post(url=url, json={'query': query}, headers=headers)
json_data = json.loads(r.text)
df_data = json_data['data']['user']['pinnedItems']['edges']
data = df_data
i = 0
while i < len(df_data):
for key, value in df_data[i].items():
projects = [
{
'name': value['name'],
'url': value['url']
}
]
i += 1
但是,当我执行此代码并打印出projects 时,只捕获了第一个对象。有谁知道如何将多个对象添加到列表中?我总共有四个对象。
注意:JSON 是基于 GitHub API 的 GraphQL 输出,查询如下:
query {
user(login:"USER") {
pinnedItems(first: 4, types: [REPOSITORY]) {
edges {
node {
... on Repository {
name
shortDescriptionHTML
url
openGraphImageUrl
}
}
}
}
}
}
这是来自 GitHub 的完整 JSON 输出:
{
"data": {
"user": {
"pinnedItems": {
"edges": [
{
"node": {
"name": "TEXT",
"shortDescriptionHTML": "TEXT",
"url": "URL",
"openGraphImageUrl": "URL"
}
},
{
"node": {
"name": "TEXT",
"shortDescriptionHTML": "TEXT",
"url": "URL",
"openGraphImageUrl": "URL"
}
},
{
"node": {
"name": "TEXT",
"shortDescriptionHTML": "TEXT",
"url": "URL",
"openGraphImageUrl": "URL"
}
},
{
"node": {
"name": "TEXT",
"shortDescriptionHTML": "TEXT",
"url": "URL",
"openGraphImageUrl": "URL"
}
}
]
}
}
}
}
谢谢
【问题讨论】: