request.post的自定义JSONEncoder

Val*_*pko 16 python python-requests

我正在为REST API编写包装器并使用请求模块.

方法.json()响应对象转移**kwargsjson.loads()功能,这样我就可以很容易地使用自定义JSON解码器和,即透明UNIX纪元时间戳转换为datetime.datetime对象.

有没有办法在Request对象中使用自定义JSON编码器?似乎我只能使用参数json,但无法找到如何使用自定义JSON编码器.

Jes*_*sse 15

不支持使用自定义编码器和json参数从alecxe(https://github.com/kennethreitz/requests/issues/2755)提供的链接中提取答案.建议您手动构建帖子.

r = requests.post('http://foo.bar', data=json.dumps(some_data, cls=CustomJSONEncoder), headers={'Content-Type': 'application/json'})
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!另外,请注意,当使用“json=...”时,请求会添加“application/json”的“content-type”值,这是某些服务器所期望的。当使用您自己编码的 JSON 负载调用请求时,您可能必须添加 `headers={'content-type': 'application/json'}` (同样,取决于您与之交互的服务器是否关心这一点) (4认同)