Protobuf 文本转 JSON 转换器
指导
Protobuf 文本转 JSON 转换器
即时转换 Protobuf 文本格式和 JSON。将 Protobuf TextProto(Protocol Buffer 消息的可读文本表示形式)解析为 JSON,或将 JSON 转换回 Protobuf 文本格式。支持嵌套消息、重复字段和可配置的缩进。
如何使用
选择您的转换方向(Protobuf 文本 → JSON 或 JSON → Protobuf 文本),粘贴您的输入,选择缩进大小,结果将即时显示。使用内置示例查看实际的 Protobuf 消息转换为 JSON。
特征
- 双向转换 – TextProto 到 JSON 和 JSON 到 TextProto
- 嵌套消息支持 – 处理任意深度的消息嵌套
- 重复字段 – 正确将重复的 Protobuf 字段转换为 JSON 数组
- 可配置的缩进 – 选择 2 或 4 个空格用于输出格式化
- 示例预设 – 实际的 Protobuf 消息供参考
- 仅客户端 – 您的数据绝不离开浏览器
常问问题
-
什么是 Protobuf 文本格式 (TextProto)?
TextProto 是 Protocol Buffer 消息的可读文本表示形式,主要用于配置文件、测试夹具和调试输出。与用于传输的二进制格式不同,TextProto 使用字段名称,并且无需模式即可读取:标量字段为 field_name: value,嵌套消息为 field_name { ... }。它不是生产用途的标准序列化格式,但在 Google 的内部工具和 TensorFlow 配置文件中很常见。
-
Protobuf 二进制格式与 JSON 有何不同?
Protobuf 二进制格式使用字段编号(而非名称)和 varint 编码来生成紧凑、快速解析的消息。Protobuf 消息的 JSON 等效项通常大 3-5 倍。但是,Protobuf 二进制格式不是自描述的——您需要 .proto 模式才能解码它。JSON 是自描述且可读的。Protobuf 适用于高吞吐量的内部 API;JSON 适用于公共 API 和配置。
-
何时需要 TextProto 和 JSON 之间进行转换?
常见场景包括:将配置文件从基于 proto 的系统(TensorFlow、Bazel)迁移到基于 JSON 的系统,通过转换为可读的 JSON 来调试 Protobuf 消息,为消耗 Protobuf 的系统编写 JSON 格式的测试夹具,以及检查以 TextProto 格式存储的 ML 模型配置。对于没有 JSON 等效类型的类型(如 Protobuf Any 或原始字节),转换是会丢失信息的,因此请仔细检查输出。
-
在没有模式的情况下,Protobuf 文本到 JSON 转换有哪些局限性?
在没有 .proto 模式的情况下,转换器无法仅从结构上知道字段类型(int32 与 int64 与 string)或区分可选、必需和重复字段。具有单个值的重复字段看起来与可选字段相同。枚举显示为整数,没有符号名称。此工具执行尽力而为的结构转换;对于生产用途,请使用具有可用模式的官方 protoc JSON 映射。
