ひどく明らかなものが欠けているような気がしますが、見えません。
ipython(Python 2.7)では、これは機能します:
In [1]: json.loads('[]')
Out[1]: []
実際のデータ構造に移る前にJSONを読み取れることを確信するために、Djangoビューで同等の最小限の例を実行しようとしています。
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