我有一个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/

10-12 20:26