我向web2py
服務器發送了一些jsonrpc
請求,其中celery
後端。有時候,我會收到我想分析的錯誤。錯誤來自jsonrpc
答覆,因此不容易理解。我得到的是這樣的:任何巧妙的方法來從JSON字符串中取消數據?
{"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"}}
我想是讓jsonrpc
回覆的error.data
部分,它UNESCAPE並將其顯示爲一個堆棧跟蹤。我可以手動執行(更改\"
- >"
並處理\n
),但我想避免在這裏重新發明輪子。
如果是JSON則該字符串應該「不包含這些額外的引號」獲取價值.. – 2012-12-27 10:42:39
是答覆的文本之前運行它通過JSON解串器後,處理前它通過json解碼器。 – dangonfast
所以:'deserilize(json)['error'] ['message']'?除非有充分的理由不對其進行反序列化,否則這將是 - 以一種明顯的非聰明方式 - 「避免重新發明輪子」。 – 2012-12-27 10:44:35