• 开源一个动态解析protobuf的工具


    好久没写博客了,主要是这一年技术没啥长进都打杂了,还有就是生活琐事越来越多,人也越来越懒了…… 之前项目中用到了Protobuf,然后测试发现这玩意不好测,总不能每次定个协议或者改下都要编译Java代码吧。于是我这边写了简单的工具,动态的解析PB文件。效果如下:

    “选择请求协议”和“选择响应协议”就是选择定义的PB,比如下面这个文件:

    package perf.pb;
    option optimize_for = LITE_RUNTIME;
    
    message Entry {
        required string key = 1;
        optional bytes value = 2;
        repeated Entry extinfo = 3;
    }
    
    message Request {
        repeated Entry entry = 1;
    }
    
    message Response {
        repeated Entry entry = 1;
    }

     另外工具支持一些简单的功能,比如“保存”,“另存为”(将PB文件和数据打包在一起),生成PB二进制的数据等:

    我们用的http,但核心代码就是动态解析PB文件和将数据绑定到JTree上,有需要的朋友可以拿源码改下,因为急着实现功能,所以代码很乱。

    关于PB文件格式有几点:

    1)支持import,工具会自动处理引用;

    2)支持repeated

    3)支持默认值,包括枚举的默认值

    4)必须要指定package

    5)不支持message嵌套

    还有如果运行有问题,看下你Java环境指向的jdk或jre的lib目录下有没有tools.jar,没有的话从别的目录拷过来就可以了。

    GitHub地址:https://github.com/zhanjindong/protobuf-tool

    其中动态解析用的是百度的jprotobuf,但是官方的版本不支持类似上面“Entry”嵌套“Entry”的格式,还有不支持repeated,我fork了一个版本:https://github.com/zhanjindong/jprotobuf

  • 相关阅读:
    Kafka日志及Topic数据清理
    python
    kotlin集合操作
    tomcat 下配置 可 调试
    linux 安装nexus3
    启动 idea 编译报错 kotlin
    nginx 增加 lua模块
    logstash配合filebeat监控tomcat日志
    redis 高级特性 不要太好用
    SpringBoot与Docker1
  • 原文地址:https://www.cnblogs.com/zhanjindong/p/protobuf-tool.html
Copyright © 2020-2023  润新知