我有一个API正在发送POST请求(JSON)供我测试。我在JSON上做了很多工作,但突然它停止工作,给了我一个JSONDecodeError
。我尝试了各种方法,比如使用request.POST
,但是没有什么能像我说的那样正确工作。如有任何帮助,我们将不胜感激。
给出错误的测试:
在Windows命令提示符下,运行:
curl -X POST http://127.0.0.1:8000/webhook/webhook_receiver/ -d '{"foo": "bar"}'
错误:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
视图:
def webhook_receiver(request, *args, **kwargs):
if request.method == 'POST':
# Get the incoming JSON Data
data = request.body.decode('utf-8')
received_json_data = json.loads(data)
return HttpResponse(received_json_data)
else:
return HttpResponse("not Post")
最佳答案
罪魁祸首是命令引用语法和Windows终端解释器的组合(例如,使用Bash发布的内容可能很好)。
详见Escaping curl command in Windows。
实际的错误(您应该发布的)如下所示:
Exception Type: JSONDecodeError at /webhook/webhook_receiver/
Exception Value: Expecting value: line 1 column 1 (char 0)
也就是说,您传递给解码器的数据不是以有效字符开头的(例如,如果JSON应该是dict,则以“{”开头,对于数组则以“[”开头)。您可以通过在数据的开头添加print()来解决问题,例如:
print('first few characters=<{}>'.format(data[:4]))
关于python - JSONDecodeError Django,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50651232/