我覺得我失去了非常明顯的東西,但我看不到它。如何從Django的GET請求中反序列化JSON字符串?
在IPython中(Python 2.7版),這部作品:
In [1]: json.loads('[]')
Out[1]: []
我試圖做一個Django視圖相當於最小的例子,來說服自己,我可以閱讀JSON在移動到一個真實的數據之前,結構:
def submit(request):
json_string = request.GET['json']
parsed = json.loads(json_string)
return HttpResponse(parsed)
我轉到
http://localhost:8001/submit/?json='[]'
把它從我的瀏覽器,我得到ValueError: No JSON object could be decoded
。
我在做什麼錯,我該如何調試?這是一種編碼問題嗎?或者我正確訪問GET的內容?或者是其他東西?
我試着將變量json_string
轉儲到文件和HttpResponse。這兩次我得到'[]'
,這肯定看起來精...
編輯:
對於其他任何初學者想知道如何調試POST的利益,Django的錯誤頁面是在異常返回。一個快速而骯髒的破解工作是
import os
def debug_post(post_req):
result = None
try:
result = submit_to_endpoint(post_req)
except urllib2.URLError as e:
out_fh = open('debug_post.tmp', 'w')
out_fh.write(e.read())
out_fh.close()
os.system('firefox ' + 'debug.tmp')
return result
'?json = []'? – 2012-10-01 11:43:38
oO任何不使用POST的理由? –
@BasicWolf - 不,這只是簡單的測試(我可以剪切和粘貼我的客戶端編碼的URL直接進入瀏覽器)。 POST是更好的選擇嗎?爲什麼? –