You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字典内的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:40:28