先安装protobuf的js支持包

npm install protobufjs

test.proto文件如下所示

syntax = "proto3";

package Test;

service Serv {
rpc ApiOne (ServOneRequest ) returns (stream ServOneReply) {};
}
service ServTwo{
rpc ApiTwo(ServTwoRequest)returns(ServTwoReply){};
}
message ServOneRequest{
string SyllabusID=1;
}
message ServOneReply{
string SyllabusID=1;
}
message ServTwoRequest{
repeated string Id=1;
}
message ServTwoReply{
EnumV EnumDemo=1;
}
enum EnumV
{
no = 0;
yes = 1;
}

 

 load方法用于加载proto文件

var protobuf = require("protobufjs");
protobuf.load('F:/node-demo/test.proto', function (err, root) {
//....
})

root对象:

上图中Test命名空间对应proto中的package Test

展开Test对象

Test对象包含文件的所有信息,如文件地址,服务,接口,message等nestedArrar包含文件内的所有结构(我粗略的理解为所有顶层的定义都在nestedArrar对象中),在这个对象中Service表示服务,Type表示message,Enum表示枚举,如需确定子元素具体类型可以从原型拿到,如

 root.Test.nestedArray[0].__proto__.constructor.className
//Service

继续向下查找包括具体的字段名字段属性,name,类型等都在里边这里就不一一展示了。

------------------分割线---------------------------------

提取注释

看了一上午官方文档终于找到了提取文件中注释的方法,上图中每个消息、服务、字段等等属性里都有一个comment字段用于存放注释,注释编写规范为/**注释文本*/,官方规范说支持C/C++注释原文如下

有兴趣的朋友可以去测试一下

提取protobuf定义文件结构的更多相关文章

  1. OrCAD Capture CIS 16.6 从PDF文档中提取引脚定义,实现快速地编辑Part的引脚名称

    操作系统:Windows 10 x64 工具1:OrCAD Capture CIS 16.6-S062 (v16-6-112FF) 工具2:Excel 工具3:Solid Converter 打开需要 ...

  2. 使用Protobuf定义网络协议

    准备工具: 工具下载地址如下:https://github.com/protocolbuffers/protobuf/releases/tag/v3.6.1,主要使用到的文件有: protoc.exe ...

  3. google protocol buffer——protobuf的问题及改进一

    这一系列文章主要是对protocol buffer这种编码格式的使用方式.特点.使用技巧进行说明,并在原生protobuf的基础上进行扩展和优化,使得它能更好地为我们服务. 在上一篇文章中,我们完整了 ...

  4. Protobuf使用规范分享

    一.Protobuf 的优点 Protobuf 有如 XML,不过它更小.更快.也更简单.它以高效的二进制方式存储,比 XML 小 3 到 10 倍,快 20 到 100 倍.你可以定义自己的数据结构 ...

  5. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

    用户定义函数(UDF)分类  SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...

  6. Protobuf for Python测试保存和读取文件

    安装pip, setuptools, and wheel 如果已经从python.org,安装啦Python 2 >=2.7.9 or Python 3 >=3.4 ,那么就已经有啦pip ...

  7. Google 开源技术protobuf

    http://blog.csdn.net/hguisu/article/details/20721109#0-tsina-1-1601-397232819ff9a47a7b7e80a40613cfe1 ...

  8. 解决protobuf不能直接在IOS上使用,利用protobuf-net在IOS上通讯

    ---------------------------------------------------------------------------------------------------- ...

  9. REGEX.C GNU 提取过滤数据

    今天被@SVCHAO  勾起兴趣来了.. 有把正则表达式兴趣捡起来了,试了下notepad++基本上语法倒是没有忘记,不过如果是用在嵌入式的方案的话,似乎还是有点费劲的. 先mark一个基础语法. 单 ...

  10. Google protobuf proto文件编写规则

    转载自: http://blog.csdn.net/yi_ya/article/details/40404231 1. 简单介绍 protobuf文件:就是定义你要的消息(类似java中的类)和消息中 ...

随机推荐

  1. C# EFCore 根据Oracle/SqlServer数据库表生成实体类和DbContext

    官方文档: https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/scaffolding?tabs=dotnet-core-cli 本文以 ...

  2. MassTransit实现Saga模式概览

    原文地址:Saga Overview 编排一系列事件的能力是一个强大的功能,而MassTransit使这成为可能. saga是由协调器管理的长期事务.saga是由事件发起的,saga编排事件,saga ...

  3. < Python全景系列-9 > Python 装饰器:优雅地增强你的函数和类

    欢迎来到我们的系列博客<Python全景系列>第九篇!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法.无论你是编程新手,还 ...

  4. 从 SpringApplication 认识 Spring 应用启动过程

    一.SpringApplication 是什么? Spring 应用的启动类. 二.SpringApplication 执行了什么? 创建 ApplicationContext 实例 Applicat ...

  5. 11. Mybatis的逆向工程

    正向工程:先创建 Java 实体类,由框架负责根据实体类生成数据库表. Hibernate 是支持正向工 程的. 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java 实体类 ...

  6. 1 大数据实战系列-spark+hadoop集成环境搭建

    1 准备环境 192.168.0.251 shulaibao1 192.168.0.252 shulaibao2 hadoop-2.8.0-bin spark-2.1.1-bin-hadoop2.7  ...

  7. Apple、AWS 这些科技巨头,已悄然入局隐私计算

    随着数字化时代的到来,数据已经成为企业竞争的重要资源.然而,与此同时,数据隐私泄露的风险也在不断增加,这已经成为了公共安全和个人权利保护的重要问题.为了解决这个问题,科技巨头谷歌.苹果.亚马逊纷纷入局 ...

  8. Taurus .Net Core 微服务开源框架:Admin 插件【4-3】 - 配置管理-Mvc【Plugin-MicroService 微服务】

    前言: 继上篇:Taurus .Net Core 微服务开源框架:Admin 插件[4-2] - 配置管理-Mvc[含请求日志打印] 本篇继续介绍下一个内容: 1.系统配置节点:Mvc - Plugi ...

  9. 聊天室(二)__ unipush 推送实现详细教程

    一.推送作用 推送作用我就不废话了,能做推送的都知道作用,直接上干货. 二.unipush 快速开通   Dcloud 开发者实名认证注册账号,绑定对应的 app 信息. uni-push产品有2个入 ...

  10. kaggle中训练得到的output太大该怎么下载?

    最近在使用Kaggle平台训练自己的模型,但是训练结束之后由于模型过大导致output那里一直在加载(转圈),即使加载出来点击download也没有反应 下面借鉴知乎大佬的方法可以完美解决!通过将其压 ...