gpt4 book ai didi

python - GitHub GraphQL API 解析 JSON 时出现问题

转载 作者:太空狗 更新时间:2023-10-29 20:51:13 26 4
gpt4 key购买 nike

这里有什么问题吗?

query='{ repositoryOwner(login : "ALEXSSS") { login repositories (first : 30){ edges { node { name } } } } }'

headers = {'Authorization': 'token xxx'}

r2=requests.post('https://api.github.com/graphql', '{"query": \"'+query+'\"}',headers=headers)

print (r2.json())

我有

{'message': 'Problems parsing JSON', 'documentation_url': 'https://developer.github.com/v3'}

但是下面这段代码可以正常工作

query1= '''{ viewer { login name } }'''  

headers = {'Authorization': 'token xxx'}

r2=requests.post('https://api.github.com/graphql', '{"query": \"'+query1+'\"}',headers=headers)

print (r2.json())

我试过更改引号(从 "到 ' 或 "等等)但它不起作用。

最佳答案

问题与双引号 (") 有关。在第一个片段中,当您将 '{"query":\"'+query+'\"}' 与查询变量连接时,您会得到以下结果:

{"query": "{ repositoryOwner(login : "ALEXSSS") { login repositories (first : 30){ edges { node { name } } } } }"}

请注意 "ALEXSSS" 中的双引号未转义,因此生成的字符串不是 json 有效格式。

当您运行第二个片段时,结果字符串为:

{"query": "{ viewer { login name } }"}

这是一个有效的 json 字符串。

最简单和最好的解决方案是简单地使用 JSON 库而不是尝试手动执行,因此您无需担心转义字符。

import json

query='{ repositoryOwner(login : "ALEXSSS") { login repositories (first : 30){ edges { node { name } } } } }'
headers = {'Authorization': 'token xxx'}

r2=requests.post('https://api.github.com/graphql', json.dumps({"query": query}), headers=headers)

print (r2.json())

但请记住,您也可以手动转义查询中的字符:

query='{ repositoryOwner(login : \"ALEXSSS\") { login repositories (first : 30){ edges { node { name } } } } }'
headers = {'Authorization': 'token xxx'}

r2=requests.post('https://api.github.com/graphql', '{"query": "'+query1+'"}', headers=headers)

print (r2.json())

它按预期工作:)

关于python - GitHub GraphQL API 解析 JSON 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40743273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com