我有一个应用程序接口正在向我发送一个JSON请求(JSON,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")
发布于 2018-06-02 07:43:15
罪魁祸首是您的命令引用语法和Windows终端解释器的组合(例如,您发布的内容使用Bash就可以了)。
详情请参见Escaping curl command in Windows。
实际的错误(您确实应该发布的错误)如下所示:
异常类型: JSONDecodeError at /webhook/webhook_receiver/ Exception值:期望值:第1行第1列(字符0)
也就是说,您传递到解码器的数据不是以有效字符开头的(例如,如果JSON被认为是字典,则为"{“;对于数组,则为"[”)。通过为数据的开头添加print(),您可能可以很容易地找出问题所在,例如:
print('first few characters=<{}>'.format(data[:4]))
https://stackoverflow.com/questions/50651232
复制相似问题