JSON ↔ Protobuf 工具箱

从 JSON 推断 .proto 模式,或用你的模式编码和解码 Protobuf 消息

JSON 示例

最大 5 MB。

选项

字段名
高级

生成的 .proto

尚无模式
粘贴 JSON 示例或加载示例,然后选择“生成 .proto”。

粘贴 JSON 示例或加载示例,然后选择“生成 .proto”。

三种转换,各自独立

JSON → .proto 根据 JSON 示例推断 proto3 模式。JSON → Protobuf 使用你自己的 .proto 模式和消息类型把 JSON 消息编码为二进制,Protobuf → JSON 则把十六进制、base64 或二进制文件解码回 JSON。推断模式和真正的编码是不同的工作,因此各有独立模式。

模式如何推断

默认情况下,文本变为 string,布尔值变为 bool,小数变为 double,整数变为 int64,因为今天能放进 int32 的值明天未必可以。对象变为以键名 PascalCase 命名的消息,单一类型的数组变为 repeated 字段,数组中的所有对象会合并,以免漏掉可选键。只有 null、为空或类型混合的值使用 google.protobuf.Value,并列在说明中。字段编号按键的顺序分配;模式部署后,它们就是线上格式的一部分,不能再改。

编码与解码

JSON 使用 ProtoJSON 映射:lowerCamelCase 字段名,64 位整数为字符串,bytes 为 base64,枚举为名称,以及 Timestamp、Duration、Struct 和包装类型等常用类型的特殊形式。高级选项可以输出默认值、保留 proto 字段名、把枚举写为数字或忽略未知 JSON 字段。解码时会列出所选消息未声明的字段编号,这通常说明选错了消息类型。

限制与隐私

模式必须自包含:已内置 Google 常用类型(Timestamp、Duration、Struct、Any、Empty、FieldMask 和包装类型),其他导入绝不会从网络获取。单个示例无法揭示枚举、映射、存在性或演进计划,因此请审核每个推断出的模式。所有处理都在浏览器中进行;消息和模式不会上传。

CodingTool 已正式上线于

Launched on StartupBaseCodingTool.dev - Free, Fast & Easy Developer Tools in One Place | Product HuntCodingTool - Featured on Startup FameFazier badgeListed on Turbo0Featured on Twelve ToolsFeatured on Findly.toolsLaunchpadly Startup DirectoryCodingTool.dev — Featured on Smol Launch