我正在发送一些jsonrpc
请求到web2py
服务器,后端是celery
。有时候,我会发现一些我想分析的错误。错误在jsonrpc
回复中被转义,因此它们不容易理解。我得到了这样的结论:
{"version": "1.1", "id": "ID4", "error": {"message": "TypeError: 'NoneType' object does not support item assignment", "code": 100, "data": [" File \"/home/myuser1/tmp/web2py/gluon/tools.py\", line 4068, in serve_jsonrpc\n s = methods[method](*params)\n", " File \"/home/myuser1/tmp/web2py/applications/mycompany_portal/controllers/activity.py\", line 66, in get_cdr_page\n invalidate_cache = pars['invalidate_cache'], use_long_polling = pars['use_long_polling'])\n", " File \"/home/myuser1/projects/new-mycompany-portal/python_modules/pmq_client.py\", line 85, in get_page\n res = result.get(timeout=10)\n", " File \"/home/myuser1/.virtualenvs/python2.7.2-mycompany1/lib/python2.7/site-packages/celery/result.py\", line 119, in get\n interval=interval)\n", " File \"/home/myuser1/.virtualenvs/python2.7.2-mycompany1/lib/python2.7/site-packages/celery/backends/amqp.py\", line 138, in wait_for\n raise self.exception_to_python(meta['result'])\n"], "name": "JSONRPCError"}}
我想要的是得到error.data
回复的error.data
部分,将其取消转义并显示为stacktrace。我可以手动完成(更改\"
->;"
并处理\n
),但我不想在这里重新发明轮子。在
这是原始的未解析JSON吗?将其解析为JSON:
重新编辑:
使用:
取消引用
http://docs.python.org/2/library/urllib.html#urllib.unquote
或者
不加引号
http://docs.python.org/2/library/urllib.html#urllib.unquote_plus
用于不转义类HTTP数据(即百分比转义)
有关详细信息,请参阅此问题和答案:
Unescape Python Strings From HTTP
并且,对于不转义常规转义符号(即反斜杠),请使用.decode()(与.encode()相对应)。请看以下答案:
https://stackoverflow.com/a/10944959/1284631
https://stackoverflow.com/a/9340191/1284631
相关问题 更多 >
编程相关推荐