Java使用JProtobuf解析protobuf格式文件

887 阅读1分钟

官方提供的库太复杂,这里想简单快速的使用protobuf格式序列化和反序列操作 使用baidu的jprotobuf来完成 想快速使用只需要以下简单三步

第一 引入maven库

版本自己上仓库查看

<dependency>
    <groupId>com.baidu</groupId>
    <artifactId>jprotobuf</artifactId>
    <version>2.4.5</version>
</dependency>
<dependency>
<groupId>com.baidu</groupId>
<artifactId>jprotobuf-precompile-plugin</artifactId>
<version>2.2.2</version>
</dependency>

第二 使用注解注解实体

protobuf是一种它描述格式,需要有描述文件来描述具体的protobuf文件的字段信息,jprotobuf使用注解来描述,简单易用。

@ProtobufClass
public class Entity {
    @Protobuf(fieldType= FieldType.STRING, order=1)
    private String id;
  @Protobuf(fieldType= FieldType.Integer, order=2)
    private Integer num;
    //这里不写get;set
    }
        

order为标识字段的序号,protobuf解析与字段名无关,与order序号有关
fieldType 为注解字段类型,建议基本字段类型使用包装类型
其中byte[]类型字段使用fieldType.BYTES
其中数组和对象类型字段使用fieldType.OBJECT
其中map类型字段使用fieldType.MAP
其中枚举类型字段使用fieldType.ENUM

第三 序列化和反序列化实体

这里比较简单,使用如下代码

public void test(){
    Codec<Entity> codec = ProtobufProxy.create(Entity.class);
    Entity m=new Entity();
    byte[] b =codec.encode(m);
    Entity m2= codec.decode(b);     
   }                

注意数组对象不能用此方法序列化和反序列化。