,我得到這樣如何當我嘗試使用<code>json.dump</code>序列化異常序列化異常
TypeError: IOError('socket error', error(61, 'Connection refused')) is not JSON serializable
和
TypeError: error(61, 'Connection refused') is not JSON serializable
例外的__dict__
領域的錯誤是{}
(這就是爲什麼How to make a class JSON serializable做沒有幫助我:那裏的答案假設__dict__
包含所有必要的信息,他們還假定我有控制要被序列化的類)。
有沒有更省電的東西str(exn)
?
我寧願一個人類可讀的文本表示(不是pickle
)。
PS。以下是我想出了:
def exception_as_dict(ex):
return dict(type=ex.__class__.__name__,
errno=ex.errno, message=ex.message,
strerror=exception_as_dict(ex.strerror)
if isinstance(ex.strerror,Exception) else ex.strerror)
json.dumps(exception_as_dict(err),indent=2)
{
"errno": "socket error",
"type": "IOError",
"strerror": {
"errno": 61,
"type": "error",
"strerror": "Connection refused"
}
}
你可以捕獲異常對象,並醃製它?您可以將pickled數據作爲二進制負載傳遞給JSON對象。 –
@cᴏʟᴅsᴘᴇᴇᴅ:我寧願一個人類可讀的文本表示。您的評論表明答案是「否」。謝謝。 – sds
你沒有說清楚。看起來你想要一種遠程交流可執行文件的方式。無論如何,您將不得不尋找一些第三方庫,或編寫自己的自定義分析器來解構或構建JSON的對象。 –