【发布时间】:2015-06-13 09:03:21
【问题描述】:
我正在向 Django 服务器发送一个带有 JSON 正文的 POST 请求(相当标准)。在服务器上,我需要使用json.loads() 对此进行解码。
问题是如何获取字符串格式的请求正文?
我目前有以下代码:
body_data = {}
if request.META.get('CONTENT_TYPE', '').lower() == 'application/json' and len(request.body) > 0:
try:
body_data = json.loads(request.body)
except Exception as e:
return HttpResponseBadRequest(json.dumps({'error': 'Invalid request: {0}'.format(str(e))}), content_type="application/json")
但是,这会产生错误the JSON object must be str, not 'bytes'。
如何在应用正确编码的情况下以字符串形式检索请求正文?
【问题讨论】:
-
request.read()能完成这项工作吗? -
@dhke,不,它给出了相同的结果,这实际上让我感到惊讶。
request.body.decode('utf-8')似乎有效,但我不确定这是否是最好的方法?