我有一个具有bytearray
类型某些属性的复杂对象,当我尝试将其转换为JSON时会引发以下错误:
TypeError:bytearray类型的对象不可JSON序列化。
我可以使方法对我知道的bytearray
类型的属性进行硬编码,然后执行以下操作:
bytes(key.key_value).decode(“ utf-8”)
问题是我有很多可能的情况,我想做一个通用的方法,使我可以将JSON的所有bytearray
属性解析为string
。
我尝试制作自己的json.JSONEncoder
实现,但没有成功。有什么建议吗?提前致谢!
最佳答案
确定要用于将字节数组解码为字符串的编码和错误处理行为,然后:
import json
class FunkyJSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, bytearray):
return obj.decode("utf-8", errors="replace")
else:
return super().default(obj)
用法示例:
>>> dumps = FunkyJSONEncoder().encode
>>> dumps({'k': bytearray(b'potato')})
'{"k": "potato"}'
关于python - 在Python中解析JSON中的所有字节数组值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52229579/