工具用的顺手吗?
你的反馈能帮助我们做得更好
将JSON数据转换为Protobuf消息定义
按 Protobuf 风格指南,将 camelCase 自动转为 snake_case
输入 JSON 后即可生成对应的 .proto 文件结构
概览
了解工具能解决的问题、计算或处理逻辑,以及数据边界。
JSON 转 Protobuf 工具读取一个 JSON 对象,或由对象组成的数组,并根据样本值推导 .proto 消息声明。输出是供开发者继续检查的结构草稿,不是 Protobuf 二进制数据,也不是把 JSON 文本直接编码成消息实例。Protobuf 的消息定义描述字段名称、类型和编号,应用仍需使用对应语言工具生成代码并验证数据。
当前推断规则将布尔值映射为 bool,整数映射为 int32 或 int64,带小数的数值映射为 double,字符串映射为 string;对象会生成嵌套 message,普通数组会生成 repeated 字段。字段号按对象键的遍历顺序从 1 起编排。可设根消息名称、package、proto2/proto3 语法,以及是否将字段名转为 snake_case。
自动推断只看当前输入值,不能知道字段在真实业务中的完整取值范围、是否必填、是否可缺省,或未来是否出现新的结构。由单个样本推断出的 int32 也不一定适合实际长期存储;字段号、字段名和类型在发布后关系到兼容性,应结合协议版本设计重新审查。
根数组只依据第一项对象生成结构,不会合并后续项中独有或不同类型的字段。嵌套对象可以生成嵌套消息;数组为空时没有样本可判断元素类型,生成器以 string 作为占位。数组元素若为对象,同样依据首个对象推断;混合元素或嵌套数组不能完整表达其类型差异。
当前生成器将 JSON null 按 string 字段占位,并附注来源值为 null;这不代表 string 是该字段真实语义。普通 JSON 数值也不能安全承载任意精度的大整数;若业务标识符要求原样保留,建议在输入中使用字符串,再人工选择 Protobuf 类型和约束。
字段名会保留或转换为 snake_case,根消息名会整理成 PascalCase;自动改名仍可能与项目既有命名冲突。字段序号按生成顺序分配,不能在真实协议中随意复用或重排已经发布的编号。
指南
按步骤完成操作,并通过示例核对输入与结果。
输入 JSON 对象,或首项为对象的数组。语法错误会显示解析错误;空数组和根值不是对象或对象数组时无法推导消息。
填写根消息名,可选 package,选择 proto2 或 proto3,并决定是否将字段名转为 snake_case。
确认每个字段的类型、嵌套关系、repeated 标记、字段编号和命名符合目标接口约定;尤其检查 null、空数组、整数范围和数组后续元素。
复制 .proto 草稿后使用项目实际采用的 Protobuf 编译工具检查,再以完整测试数据验证序列化、反序列化和版本兼容性。
问答
集中解答高频疑问与容易混淆的问题。
根数组和对象数组都只用第一项对象推断。若后续元素有额外字段或类型不同,生成内容不会自动覆盖这些差异。
空数组没有元素样本可供判断,当前生成器用 repeated string 占位。根据业务含义改成合适元素类型后再编译。
不应未经检查直接使用。编号按当前对象键顺序从 1 开始,正式协议需遵守项目已有字段号并维护兼容性,避免编号复用或随意改动。
页面按输入值生成声明文本并显示,不等于完整 Protobuf 编译或业务 schema 验证。请在目标项目的工具链中编译并测试。
须知
使用前了解适用范围、结果限制与必要提醒。
样本推断无法替代接口契约设计。发布前检查可空性、必填性、数值范围、枚举、字段保留策略、跨版本兼容和不同 JSON 样本之间的差异。Protobuf JSON 映射也不能无损表示所有任意 JSON schema。
输入内容会在页面中显示并可通过分享参数复现;不要放入密钥、访问令牌、个人信息或未经授权的数据。需要处理敏感样本时,先脱敏或使用合成数据。
推荐
查找相关工具、专题与可用的 API 能力。