2013-05-08 232 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格式,否則你會得到同樣的錯誤。