将 GitHub api 与 Python dict "Problems parsing JSON" 一起使用时出现问题

Problem using GitHub api with Python dict "Problems parsing JSON"

我正在尝试使用 GitHub api 创建新文件。根据 documentation

这可以通过 PUT 请求完成。

我正在使用请求包来发出请求。 GitHub api 端点接受有效的 json 对象作为输入,即字符串在双引号内。

我的数据格式如下 -

{
  'message': 'Updated learn.md',
  'content': 'ZW51bTM0PT0xLjEuNAotZSBnaXQraHR0cHM6Ly9naXRodWIuY29tL29wZW50b2svT3BlbnRvay1QeXRob24tU0RLLmdpdEAwMzU4YTI0ZDM0ZTkzMjVjYzRhODNhYmQxZTVjMGJmYzQ2M2ZkMjYwI2VnZz1vcGVudG9rCnB5dHo9PTIwMTYuNApyZXF1ZXN0cz09Mi4xMC4wCgo=',
  'branch': 'master'
}

由于我将数据以 Python 字典的形式放入其中,因此它带有单引号,但 GitHub 不接受它并给出 [= 的 400 响应37=]如下图

{
  "message": "Problems parsing JSON",
  "documentation_url": "https://developer.github.com/v3/repos/contents/#update-a-file"
}

我已经通过使用邮递员发出 PUT 请求验证了问题是因为引号,在这种情况下它是成功的。

正确的数据如下所示

{
  "message": "Updated learn.md",
  "content": "ZW51bTM0PT0xLjEuNAotZSBnaXQraHR0cHM6Ly9naXRodWIuY29tL29wZW50b2svT3BlbnRvay1QeXRob24tU0RLLmdpdEAwMzU4YTI0ZDM0ZTkzMjVjYzRhODNhYmQxZTVjMGJmYzQ2M2ZkMjYwI2VnZz1vcGVudG9rCnB5dHo9PTIwMTYuNApyZXF1ZXN0cz09Mi4xMC4wCgo=",
  "branch": "master"
}

这是我打电话的方式

def put_data_to_github(self, url, data):
    headers = {}
    headers['Authorization'] = "token " + self.auth_token
    response = requests.put(url, data=data, headers=headers)
    return response

如何在 Python 中创建有效的 JSON 对象,以便 GitHub api 接受它?我怎样才能做到这一点?

您必须在发送前将您的数据转换为 json..

import json
...
response = requests.put(url, data=json.dumps(data), headers=headers)