当前位置: 首页 > news >正文

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

http://www.jsqmd.com/news/759502/

相关文章:

  • NVIDIA Jetson Orin 简介
  • 利用 One-API 实现 Awesome- GPT( Zotero 插件)的多模型切换
  • 2025届学术党必备的六大AI学术平台推荐
  • 行测申论之外,这些“隐藏”考试内容你知道吗?银保监、外交部等岗位专业课备考指南
  • 新手零代码入门:借助快马AI生成你的第一个有赞式微商城
  • 2026AI商用合规:GPT-Image-2边界解析
  • 别再为电机电感不准发愁了:手把手教你用Simulink复现自适应增益ESO无模型预测控制
  • 2026年企业钓鱼攻击全景报告:AI驱动的“闪电战“与可落地的应急响应SOP
  • 风力发电机输出功率预测建模:算法、影响因素与优化策略深度解析
  • 大模型微调终极指南:从显存优化到高效推理,一文吃透所有核心技术
  • SDQM:无需真实数据的合成质量评估新方法
  • 别再手动烧录MAC了!用STM32F103的UID自动生成局域网唯一设备ID(附完整代码)
  • Sunshine游戏串流终极指南:自托管游戏串流服务器的完整配置与优化
  • 超性感的轻量级openclaw平替,我给nanobot打call
  • 如何用Obsidian Zettelkasten模板实现知识管理的终极升级:从信息收集到智慧创造的完整指南
  • 跨越语言障碍的直播翻译神器:Stream-Translator完全指南
  • Python脚本Shebang最佳实践
  • Laravel 4.x:颠覆PHP框架的10大革新特性
  • 如何用Python构建卡车模拟器的自动驾驶系统?ETS2LA技术深度解析
  • 逆向实战:从汇编到Python,手把手教你调用《魔域》游戏中的技能Call
  • 拿到基因报告先别慌 这五个最常见误读很多人都踩过坑!
  • 【产品底稿 12】工程架构最终定型:完整模块拆分、分包规范、层级依赖与开发规约全清单
  • 浮式海上风力机系统的超螺旋二阶滑模观测最大功率点跟踪【附代码】
  • 保姆级教程:用Python+One-Class SVM给监控视频做‘体检’,快速识别打架、偷窃等异常行为
  • 从航海雷达到MATLAB脚本:TCPA/DCPA计算在船舶智能辅助决策系统中的应用实践
  • llama-cpp-python:本地大语言模型部署的Python桥梁
  • ModTheSpire终极指南:为《杀戮尖塔》打造无限扩展的游戏体验
  • 【人生底稿 20】北上石家庄:从赣州到省会,第一次直面一把手的汇报
  • 利川乡村民宿推荐:投资者决策参考策略深度解析
  • 为开源Agent框架OpenClaw配置Taotoken模型供应商的详细步骤