Protocol Buffers编码/解码
编码、解码和验证 Protocol Buffers 消息
Proto 模式
示例模式:
输入
输出
关于 Protocol Buffers
Protocol Buffers(Protobuf)是由 Google 开发的一种语言无关、平台无关的可扩展序列化结构化数据机制。
主要特性
语言无关、平台无关
比 XML/JSON 更小更快
通过模式定义实现强类型
向前和向后兼容
自动代码生成
高效的二进制编码
如何使用此工具
- 在模式编辑器中输入您的 .proto 模式定义
- 点击【解析模式】来验证和解析模式
- 选择您要操作的消息类型
- 编码时:输入 JSON 数据,点击【编码】
- 解码时:输入二进制数据,点击【解码】
Proto 语法参考
Protocol Buffers 使用简单的语法来定义消息类型:
syntax = "proto3";
message Person {
string name = 1;
int32 id = 2;
string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
string number = 1;
PhoneType type = 2;
}
repeated PhoneNumber phones = 4;
}syntax: 指定 protobuf 版本(proto2 或 proto3)message: 定义包含字段的消息类型field: 每个字段都有类型、名称和唯一编号enum: 定义枚举类型repeated: 将字段标记为重复(数组/列表)
标量类型
Protocol Buffers 支持多种标量类型:
| 类型 | 描述 | 默认值 |
|---|---|---|
| int32, int64 | 有符号整数(变长编码) | 0 |
| uint32, uint64 | 无符号整数 | 0 |
| sint32, sint64 | 使用 ZigZag 编码的有符号整数(对负数高效) | 0 |
| float, double | 浮点数(32 或 64 位) | 0.0 |
| bool | 布尔值(true/false) | false |
| string | UTF-8 编码的文本字符串 | "" |
| bytes | 任意二进制数据 | empty |
最佳实践
- 新项目使用 proto3 语法 - 更简单且支持更广泛
- 保持字段编号稳定 - 永远不要重用或更改现有字段的编号
- 使用有意义的字段名称来清楚描述数据
- 为常用字段保留编号 1-15(它们只使用 1 个字节)
- 使用 'repeated' 关键字表示数组/列表
- 为具有固定可能值集合的字段定义枚举
常见用例
- 微服务间通信(gRPC)
- 数据存储和缓存
- 配置文件
- 网络协议和 API
常见问题 (FAQ)
什么是 Protocol Buffers (Protobuf)?
Protocol Buffers 是一种语言中立、平台中立的结构化数据序列化机制。它类似于 JSON,但体积更小、速度更快,并且可以生成原生语言绑定。它广泛应用于 gRPC 微服务中。
如何使用这个在线 Protobuf 工具?
首先,将您的 .proto 模式定义粘贴到编辑器中(或加载示例)。点击"解析模式"并选择消息类型。然后,您可以在"编码"(JSON → 二进制)和"解码"(二进制 → JSON)模式之间切换以处理您的数据。
我的数据处理安全吗?
是的。此工具使用 JavaScript (protobuf.js) 100% 在您的浏览器中运行。您的模式、JSON 数据和二进制数据永远不会发送到我们的服务器,确保您的敏感信息保密。