我正在编写一种“通用” json 解码器,它将使用默认的 json 编码器加集转换它可以转换的所有内容,以及它将使用转换的所有其他内容str()
- 这有点愚蠢,但它可以让用户安静地工作并让用户知道最初有什么样的数据。
因此,通过小修改,以下代码取自此处:
import json
class SetEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, set):
return list(obj)
try:
return json.JSONEncoder.default(self, obj)
except TypeError:
return str(obj)
然后,如果我尝试使用此编码器转换函数,它将返回如下内容:
'<function a at 0x10ddd8f28>'
这又有点愚蠢,但对我的目的来说完全没问题。
问题是:如果str()
无法转换作为输入参数提供的任何内容怎么办?会触发什么样的错误?我查看了str
源代码,并没有得到准确的时间(如果有的话?)它捕获了可能的转换错误。或者假设转换提供的任何类型的输入?