我觉得我错过了一些非常明显的东西,但我看不到它。
在 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 的错误页面在异常中返回。一个快速而讨厌的 hack 是
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