2013-05-08 132 views
8

创建空的JSON对象,我有这样的代码我怎样才能在Python

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

,但我得到这个错误

No JSON object could be decoded 

我只是想,如果没有在POST mydata然后我没有得到这样的错误

回答

16

简单:

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 
+0

这里经常抓人的一个故事是空串。如果mydata为空,那么这将失败,并且get中的默认参数不会保存您。 – ButtersB 2015-08-28 14:51:40

1

loads()需要一个JSON格式的字符串,并把它变成像字典或列表中的Python对象。在您的代码中,如果mydata不存在于request.POST中,那么您将传递dict()作为默认值,而它应该是一个字符串,如"{}"。所以,你可以写 -

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

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