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

Python 3中如何将字典转为JSON二进制字符串?ujson.dumps无效

解决Python字典转JSON二进制字符串的问题

这个问题我之前也碰到过,其实核心是搞清楚ujson.dumps()的返回类型和你需要的二进制字符串之间的区别:在Python3中,ujson.dumps()默认返回的是Unicode字符串(str类型),而你要的b'...'是字节序列(bytes类型),所以需要多一步编码操作,或者用另一种方式生成字节流。

下面给你两种可行的方法:

方法一:对dumps结果直接编码

这是最直观的方式,先让ujson生成JSON字符串,再用UTF-8编码转换成二进制:

import ujson

d = {'1': 'myval', '2': 'myval2'}
# 先得到JSON格式的字符串
json_str = ujson.dumps(d)
# 将字符串编码为二进制字节流(默认用utf-8即可)
json_binary_str = json_str.encode('utf-8')

执行后json_binary_str就是你需要的b'{"1": "myval", "2": "myval2"}'(具体格式可能因ujson的缩进设置略有不同,但内容一致)。

方法二:用dump写入BytesIO获取二进制

如果你不想先生成字符串再编码,也可以直接把字典序列化到字节缓冲区里:

import ujson
from io import BytesIO

d = {'1': 'myval', '2': 'myval2'}
# 创建一个字节缓冲区
buffer = BytesIO()
# 把字典序列化到缓冲区中
ujson.dump(d, buffer)
# 从缓冲区获取二进制内容
json_binary_str = buffer.getvalue()

这种方式跳过了中间的字符串步骤,直接生成字节流,适合处理大字典时节省内存。

另外补充一点:不止ujson,Python标准库的json模块也是同样的逻辑——json.dumps()返回str,编码后得到bytes;json.dump()可以写入文件对象,包括BytesIO。

内容的提问来源于stack exchange,提问作者tensor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:25:18