Protobuf ⇄ JSON 互转解码器

把抓到的 protobuf 报文 hex / base64 粘贴进来,按 wire format 逐字段解码:varint、zigzag、fixed32/64、length-delimited 与嵌套 message 全部还原成字段树和 JSON;反向也能把字段号 JSON 编码回二进制报文。全程浏览器本地运行,报文不外传。

输入

解码:粘贴报文字节;编码:粘贴「字段号为键」的 JSON。

输入格式:

输出

字段树(未知 schema 时以字段号标识,自动尝试嵌套 message / UTF-8 字符串 / 原始 hex)。

  • 等待转换…
等价 JSON:
// 解码结果 JSON 将显示在这里

wire type 速查表

每个字段以 key = (字段号 << 3) | wire type 的 varint 开头,据此逐段切分报文。

wire type编码方式对应 proto 类型长度
0Varint(7bit 分组,低位在前)int32 / int64 / uint32 / uint64 / sint32 / sint64 / bool / enum1–10 字节
1Fixed64(小端)fixed64 / sfixed64 / double8 字节
2Length-delimited(varint 长度 + 内容)string / bytes / message / repeated 打包变长
3 / 4Start / End Group已废弃的 group 语法—
5Fixed32(小端)fixed32 / sfixed32 / float4 字节

批量解码 · wire 字节构成 · CSV 导出

每行粘贴一条抓包报文,自动识别 HEX 或 Base64 逐条解码;第一条成功报文的字段字节占比用堆叠条展示,全部结果可导出 CSV。

批量报文(每行一条,自动识别 HEX / Base64,最多 200 条)

单行解析失败不影响其他行;编码模式不支持批量,请切回「报文 → JSON」。

wire type 字节构成(第一条成功报文)
#输入字节字段JSON 摘要状态
每行粘贴一条报文并点击「批量解码」,结果表与字节构成图将显示在这里。

方案管理 · 数值对比 · 导出

调好的参数可存成方案随时载入,也能生成可分享链接;结果里的数值列会自动画成对比图,并支持导出 CSV / JSON。

最近方案 暂无

🔷口径说明与常见误填

无 schema 解 wire format,反向编码出 .bin

双向模式
解码:HEX 或 Base64 变字段树与等价 JSON;编码:JSON 变二进制。
无 schema 解析
按 varint 与 zigzag 规则直读 proto3 wire format,不需要 proto 文件。
字段树
字段号、wire type、值逐层展开,嵌套消息可点开。
速查表
wire type 0 至 5 六类对照速查,边解边查。
文件产出
编码结果可下载 .bin 文件,直接打接口测试。

这个工具解决什么问题

调试 gRPC、protobuf 接口时常常只拿到一串二进制字节。本工具支持 HEX 与 Base64 输入的无 schema 解码:按 wire format 的 varint、zigzag 规则解析出字段号树与等价 JSON;反向也能从 JSON 编码出 hex、Base64 或 .bin 文件,是 grpc-web 抓包调试的顺手工具。

三条调试守则

① 嵌套消息靠猜:无 schema 时内嵌消息与长整数编码形态相同,歧义字段要对照 proto 定义确认。

② grpc-web 有 5 字节前缀:每帧消息前有 1 字节压缩标志加 4 字节消息长度,去掉前缀再粘贴解码,否则首字段全乱。

③ 负数走 zigzag:sint32、sint64 用 zigzag 编码,按普通 varint 读小负数会解出天文数字,本页自动识别展示。

怎么用

  1. 第 1 步 · 选模式与编码
    切换解码或编码,选择 HEX 或 Base64 输入形态。
  2. 第 2 步 · 粘贴数据
    把抓包字节粘进解码框,或把 JSON 粘进编码框。
  3. 第 3 步 · 看字段树
    逐层检查字段号、wire type 与值,展开嵌套消息。
  4. 第 4 步 · 复制或下载
    复制等价 JSON,或下载编码产物 .bin 文件。

更新记录

  • v1.0 2026-11-02
  • 2026-11-02 上线首个版本
  • 2026-11-02 新增无 schema 解码与 .bin 下载

常见问题

protobuf 和 JSON 有什么区别?
protobuf 是二进制编码:字段用编号传输,体积小、解析快,但没有 schema 人眼读不了;JSON 是文本自描述,可读性好但冗长。内部传输用 protobuf、对外展示用 JSON,本页负责两者互转。
proto3 没有 schema 怎么解码?
wire format 每个字段以 varint 键开头:字段号左移 3 位再加 wire type,随后按类型读 varint、64 位定长、长度前缀字节串或 32 位定长值。本页无 schema 解码就按这套规则逐字段还原,仅内嵌消息与长整数存在歧义。
grpc-web 抓包怎么调试?
响应体每条消息前有 5 字节前缀:1 字节压缩标志加 4 字节大端消息长度。剥掉前缀把剩余字节转成 HEX 粘贴到本页,即可看到字段树与等价 JSON。
varint 和 zigzag 怎么算?
varint 每字节存 7 位数据、最高位是继续标志,小整数只占一字节;有符号数先做 zigzag 映射:非负数变两倍,负数变绝对值两倍减一,让小的负数也占短字节。本页解码时自动换算回原值。
Protobuf JSON 互转工具怎么用?
解码:粘贴 HEX 或 Base64 字节即得字段树与等价 JSON;编码:粘贴 JSON 选输出形态,复制 hex、Base64 或下载 .bin 直接请求接口,双向都在浏览器本地完成。

💬 留言板 0

全部留言需审核通过后展示
💬

还没有留言,来抢沙发吧!

✍️ 说点什么
0 / 500
图形验证码
👣 做完这一步,顺便看看
🏛️ 凯撒密码解密 凯撒密码解密 :1~25 位位移加解密、ROT13 一键转换… → 🔤 乱码转换器在线修复 乱码转换器在线 :把“锟斤拷”“�”“涓枃”“😀”等乱… → 📸 代码截图美化工具 在线代码转图片工具:粘贴或输入代码(支持 JavaScrip… → 🎨 WCAG 对比度检测工具 在线颜色对比度检测工具:输入前景文字色与背景色(支持 #he… →
全部工具 →