博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Google protobuffer序列化工具使用以及与idea集成
阅读量:4158 次
发布时间:2019-05-26

本文共 3056 字,大约阅读时间需要 10 分钟。

参考:

创建Maven项目,pom.xml文件添加如下内容:

3.6.1
1.18.0
com.google.protobuf
protobuf-java
${protobuf.version}
kr.motd.maven
os-maven-plugin
1.5.0.Final
org.xolstice.maven.plugins
protobuf-maven-plugin
0.5.0
com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
grpc-java
io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}
compile
compile-custom

在main目录下新建proto文件夹,并将该文件夹设置为源代码目录(编译时会自动去这个目录下找proto文件),如下图:

在该目录下编写proto文件,这里写各测试的Person.proto,内容如下:

syntax = "proto3";  //标识是protobuffer3  ,默认是2package protobuffer.proto;option java_package = "com.heavy.learn.protobuffer";option java_outer_classname = "PersonPB";message Person  {   sint64 id = 1;   int32 age = 2;   string name=3;   repeated float exam = 4;   bool  good =5;   bytes byt = 6;   double d = 7 ;   enum Level {      NORMAL= 0;      GOOD= 1;      BAD = 2;   }   Level level = 8;   map
map = 9; message list{ repeated Person ele=1; }}message Family{ repeated Person p =1;}

使用protobuf下的compile来编译,会生成java代码:

编写测试类,来使用序列化与反序列化

package com.heavy.learn.protobuffer;import com.google.protobuf.InvalidProtocolBufferException; import java.util.List; public class ProtoTest {    public static void main(String[] args) {        PersonPB.Person.Builder person = PersonPB.Person.newBuilder();        person.setAge(12);        person.setId(1);        person.setName("Jacky");        person.setExam(0,2.3f);        person.setExam(1,2.4f);        //设置map        person.putMap("a",null);        PersonPB.Family.Builder fa = PersonPB.Family.newBuilder();        fa.addP(person);        System.out.println(person);        //序列化        PersonPB.Person pinfo = person.build();        byte[] barr = pinfo.toByteArray();        System.out.println(barr.length);        try {            //反序列化            PersonPB.Person p= PersonPB.Person.parseFrom(barr);            System.out.println(p);            //获取list            p.getExamList();            PersonPB.Family f = PersonPB.Family.parseFrom(fa.build().toByteArray());            List
list = f.getPList(); for(PersonPB.Person px : list){ System.out.println(px.getAge()); } } catch (InvalidProtocolBufferException e) { e.printStackTrace(); } }}

 

转载地址:http://wjyxi.baihongyu.com/

你可能感兴趣的文章
RQP-DEF-0177
查看>>
MySQL字段类型的选择与MySQL的查询效率
查看>>
Java的Properties配置文件用法【续】
查看>>
JAVA操作properties文件的代码实例
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>
SVN-无法查看log,提示Want to go offline,时间显示1970问题,error主要是 url中 有一层的中文进行了2次encode
查看>>
NGINX
查看>>
Qt文件夹选择对话框
查看>>
DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
查看>>
第三方SDK:JPush SDK Eclipse
查看>>
第三方开源库:imageLoader的使用
查看>>
Android studio_迁移Eclipse项目到Android studio
查看>>
转载知乎-前端汇总资源
查看>>
JavaScript substr() 方法
查看>>
JavaScript slice() 方法
查看>>