仅靠.pb文件如何将Protobuf .bin文件转换为JSON格式?
Protobuf .bin转JSON的实用方案
现成工具直接用
不用自己折腾开发,这些工具能快速解决问题:
- 官方
protoc工具:
这是最靠谱的选择,步骤分两步:- 先把
.proto文件转成对应语言的代码(比如Python):protoc --python_out=. your_file.proto - 直接解码
.bin文件并输出结构化内容,再转JSON:
先查看原始结构:protoc --decode_raw < your_file.bin
结合.proto定义解码指定消息类型:
输出的文本可以用protoc --decode=YourMessageName your_file.proto < your_file.binjq这类工具一键转成JSON。
- 先把
- GUI工具(适合非开发):
- Protobuf Inspector:拖入
.proto和.bin文件,直接查看结构并导出JSON,操作零门槛。 - QuickType:能基于
.proto定义解析二进制数据,输出JSON格式,不用写代码。
- Protobuf Inspector:拖入
自己用Python写工具(新手也能搞定)
哪怕Python基础差也完全没问题,跟着步骤走就行:
- 先装依赖:
pip install protobuf - 用
protoc生成Python代码(就是上面第一步的命令)。 - 复制下面的脚本,替换文件名和消息类型就行:
不需要懂复杂语法,改几个名字就能跑通。import json from google.protobuf.json_format import MessageToJson # 替换成你生成的Python文件里的消息类 from your_generated_proto import TargetMessage # 读取二进制文件 with open("your_data.bin", "rb") as f: bin_data = f.read() # 解析数据 msg = TargetMessage() msg.ParseFromString(bin_data) # 转成JSON并保存 json_result = MessageToJson(msg) print(json_result) with open("output.json", "w", encoding="utf-8") as f: f.write(json_result)
小提示
- 确保
.proto文件完整,如果有依赖其他.proto,要把所有相关文件放在同一目录,或者用protoc --proto_path=./proto_dir指定路径。 - 如果
.bin是多个消息拼起来的,可能需要循环解析,但游戏里大多是单条消息,先试试单条解析。
内容的提问来源于stack exchange,提问作者Panda
相关产品推荐
相关产品推荐

