JSON 转 Proto 工具(支持嵌套与注释解析)

📅 2026/7/14 17:01:43 👁️ 阅读次数 📝 编程学习
JSON 转 Proto 工具(支持嵌套与注释解析)

JSON 转 Proto 工具(支持嵌套与注释解析)

平时在做 gRPC 或者微服务的时候,经常需要写.proto文件。

但现实情况是,大多数时候我们手里已经有一份 JSON 数据结构了,再去手写 proto,其实有点重复劳动。

最近整理了一个 JSON 转 Proto 的工具,主要就是把这一步自动化,同时补了一些实际开发里比较有用的能力,比如嵌套解析、注释保留这些。


功能点

1. 嵌套 JSON 自动解析

支持递归解析 JSON 结构。

如果 JSON 里有对象嵌套、数组嵌套,会自动拆分成多个message,并建立引用关系,不需要手动去拆结构。


2. 数组自动识别为 repeated

像这种结构:

{"list":[{"name":"test"}]}

会自动生成:

repeated Item list = 1;

基本符合 proto 的使用习惯。


3. 注释解析(比较实用)

如果 JSON 里带有注释:

{"name":"test",// 姓名"age":10// 年龄}

生成的 proto 会保留这些注释:

message GenerateObj { string name = 1; // 姓名 int32 age = 2; // 年龄 }

这一点在接口文档或者多人协作时还是挺有用的。


4. JSON 格式校验

在转换之前会先做一层 JSON 校验。

如果有语法问题,会提示具体错误位置,避免生成错误的 proto。


示例

输入:

{"name":"test",// 姓名"age":10,// 年龄"addr":"四川成都",// 地址"cls_info":[{"name":"篮球班",// 班名"teacher":"张老师"// 老师},{"name":"美术班","teacher":"李老师"}]}

输出:

message ClsInfo { string name = 1; // 班名 string teacher = 2; // 老师 } message GenerateObj { string name = 1; // 姓名 int32 age = 2; // 年龄 string addr = 3; // 地址 repeated ClsInfo cls_info = 4; // 班级 }

使用场景

  • 从已有 JSON 快速生成 proto
  • gRPC 接口定义
  • 数据结构建模
  • 接口文档辅助生成

地址

https://gotool.top


一点说明

这个工具主要解决的是一件小事:
把「JSON → Proto」这一步做得更省事一点。

顺带把几个常见问题一起处理了:

  • 嵌套结构自动拆
  • 数组自动转 repeated
  • 注释尽量保留

如果你平时会写 proto,这一步其实能省不少时间。