如何创建一个空的 JSON 对象?

24

我有这段代码

json.loads(request.POST.get('mydata',dict()))

但我得到了这个错误

No JSON object could be decoded

我只希望如果POST中没有mydata,那么我就不会收到这个错误。

2个回答

31

简单来说:

json.loads(request.POST.get('mydata', '{}'))

或者:

data = json.loads(request.POST['mydata']) if 'mydata' in request.POST else {}

或者:

if 'mydata' in request.POST:
    data = json.loads(request.POST['mydata'])
else:
    data = {} # or data = None

这里经常会出现一个问题,就是空字符串。如果mydata为空,那么这个操作将失败,并且get中的默认参数也无法帮助你。 - ButtersB

1

loads()接受一个json格式的字符串,并将其转换为Python对象,如dict或list。在您的代码中,如果request.POST中不存在mydata,则将dict()作为默认值传递,而它应该是一个字符串,例如"{}"。因此,您可以这样编写 -

json_data = json.loads(request.POST.get('mydata', "{}"))

同时记得,request.POST['mydata'] 的值必须是JSON格式的,否则你会收到相同的错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接