当我尝试使用json.dump
序列化异常时,会出现如下错误
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
)。
附:这是我想到的:
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"
}
}
目前没有回答
相关问题 更多 >
编程相关推荐