zoukankan      html  css  js  c++  java
  • 开源一个动态解析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

  • 相关阅读:
    everything is nothing
    基础算法
    OC 优化目录
    iOS 更改启动视图
    单例--iOS
    OC-Objection 学习笔记之一:简单的开始
    iOS 类库列表
    IOS 上线问题
    OC强弱引用的使用规则
    设置桌面图标
  • 原文地址:https://www.cnblogs.com/zhanjindong/p/protobuf-tool.html
Copyright © 2011-2022 走看看