将字节的dict转换为json

2024-05-29 00:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在努力改变:

response data = {'policy': b'eyJleHBpcmF0a', 'signature': b'TdXjfAp'}

到json:

jsonified = json.dumps( response_data )

但它会导致错误消息:

TypeError: Object of type 'bytes' is not JSON serializable

正确的转换方法是什么?

预期结果

jsonified = {"policy": "eyJleHBpcmF0a", "signature": "TdXjfAp"}

Tags: ofjson消息dataobjectresponsetype错误
1条回答
网友
1楼 · 发布于 2024-05-29 00:25:29

您可以为无法立即序列化的类型编写自己的编码器:

import json

class MyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, (bytes, bytearray)):
            return obj.decode("ASCII") # <- or any other encoding of your choice
        # Let the base class default method raise the TypeError
        return json.JSONEncoder.default(self, obj)

data = {'policy': b'eyJleHBpcmF0a', 'signature': b'TdXjfAp'}
jsonified = json.dumps( data, cls=MyEncoder )
print(jsonified)
# {"policy": "eyJleHBpcmF0a", "signature": "TdXjfAp"}

这种方法可以很容易地扩展到支持其他类型,比如das datetime。

只要确保最后得到str/int/float/。。。或函数末尾的任何其他可序列化类型。

正如@Tomalak指出的,您还可以使用base64编码而不是ASCII编码来确保支持控制字符。

相关问题 更多 >

    热门问题