dex*_*cko 5 json struct python-3.x
我有一个大型对象,使用struct.unpack从二进制文件中读取,一些值是字符数组,读取为字节.
由于Python 3中的字符数组被读取为字节而不是字符串(如Python 2中所示),因此它们不能直接传递给json.dumps,因为"bytes"不是JSON可序列化的.
有没有办法从解压缩结构到json而不搜索每个值并将字节转换为字符串?
在这种情况下,您可以使用自定义编码器.见下文
import json
x = {}
x['bytes'] = [b"i am bytes", "test"]
x['string'] = "strings"
x['unicode'] = u"unicode string"
class MyEncoder(json.JSONEncoder):
def default(self, o):
if type(o) is bytes:
return o.decode("utf-8")
return super(MyEncoder, self).default(o)
print(json.dumps(x, cls=MyEncoder))
# {"bytes": ["i am bytes", "test"], "string": "strings", "unicode": "unicode string"}
Run Code Online (Sandbox Code Playgroud)