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

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

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

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

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


功能点

1. 嵌套 JSON 自动解析

支持递归解析 JSON 结构。

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


2. 数组自动识别为 repeated

像这种结构:

json 复制代码
{
  "list": [
    {
      "name": "test"
    }
  ]
}

会自动生成:

proto 复制代码
repeated Item list = 1;

基本符合 proto 的使用习惯。


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

如果 JSON 里带有注释:

json 复制代码
{
  "name": "test", // 姓名
  "age": 10 // 年龄
}

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

proto 复制代码
message GenerateObj {
  string name = 1; // 姓名
  int32 age = 2; // 年龄
}

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


4. JSON 格式校验

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

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


示例

输入:

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

输出:

proto 复制代码
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,这一步其实能省不少时间。

相关推荐
PixelBai12 小时前
JSON查看器实际应用场景案例
json
田里的水稻13 小时前
EP_XML\JSON配置文件和YAML
xml·运维·人工智能·机器人·自动驾驶·json
耍酷的魔镜1 天前
核心设计理念:5W2H、JSON-LD 与通用知识图谱
人工智能·json·知识图谱
自信的未来1 天前
JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
java·前端·json
墨神谕1 天前
JSON-RPC 2.0
网络协议·rpc·json
PixelBai1 天前
什么是 JSON 验证工具?
json
码农学院2 天前
电商零售品牌的6个技术信号——从JSON-LD结构化数据到llms.txt,让AI搜索主动推荐你的产品
人工智能·json·零售
月走乂山2 天前
DeepSeek 对话记录一键导出:零依赖 Tampermonkey 脚本(支持 JSON/Markdown/ZIP)
json·油猴脚本·tampermonkey·数据导出·deepseek·对话记录·用户脚本
前网易架构师-高司机2 天前
带标注的打电话识别数据集,识别率98.9%,9723张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·json·手机·数据集·打电话
sjg200104142 天前
JSON对象参数转URL参数
json