Python 3 - 将struct.unpack中的数据写入json而不进行单独重铸

dex*_*cko 5 json struct python-3.x

我有一个大型对象,使用struct.unpack从二进制文件中读取,一些值是字符数组,读取为字节.

由于Python 3中的字符数组被读取为字节而不是字符串(如Python 2中所示),因此它们不能直接传递给json.dumps,因为"bytes"不是JSON可序列化的.

有没有办法从解压缩结构到json而不搜索每个值并将字节转换为字符串?

Tar*_*ani 6

在这种情况下,您可以使用自定义编码器.见下文

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)