如何将字典内的byte类型数据转换为str以生成JSON?
解决字典中byte类型转字符串以生成JSON的问题
当字典包含bytes类型数据时,直接调用json.dumps()会触发TypeError,因为JSON标准不支持序列化字节对象。要解决这个问题,需要递归遍历整个数据结构,将所有bytes类型解码为字符串后再序列化。
递归转换函数
下面的函数会处理字典、列表、元组等嵌套结构,将所有bytes对象按指定编码(默认ISO-8859-1)转换为字符串:
def bytes_to_str(data, encoding='ISO-8859-1'): if isinstance(data, bytes): return data.decode(encoding) elif isinstance(data, dict): return {k: bytes_to_str(v, encoding) for k, v in data.items()} elif isinstance(data, list): return [bytes_to_str(item, encoding) for item in data] elif isinstance(data, tuple): return tuple(bytes_to_str(item, encoding) for item in data) # 可根据需求添加其他容器类型的处理,比如set else: return data
使用示例
将原字典传入转换函数处理后,即可正常生成JSON:
import json dictionary ={ "id": "04", "name": "sunil", "code": b"HR", "nested_data": {"department": b"Operations", "members": [b"Alice", b"Bob"]} } # 处理所有bytes类型数据 processed_dict = bytes_to_str(dictionary) # 生成并打印JSON json_object = json.dumps(processed_dict, indent=4) print(json_object)
运行后输出的JSON会将所有bytes类型转换为对应的字符串,不会再抛出序列化错误。
内容的提问来源于stack exchange,提问作者Marcos Rocha
相关产品推荐
相关产品推荐

