我有一个具有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/

10-12 22:00
查看更多