1、先去github上下载最新的protobuf.zip包 地址:https://github.com/google/protobuf/releases  

编解码技术- 序列化工具protobuf(入门教程)


2)配置环境变量:

编解码技术- 序列化工具protobuf(入门教程)

3)创建   test.proto 的文件

syntax = "proto3";
// 如果使用此注释,则使用proto3; 否则使用proto2
// 生成类的包名
option java_package = "com.protobuf";
//生成的数据访问类的类名,如果没有指定此值,则生成的类名为proto文件名的驼峰命名方法
option java_outer_classname = "test";
message testbuf {
  int32 id = 1;
  string name = 2;
  string email = 3;
  repeated int32 mylist = 4; // List列表
}

4)在当前文件下 cmd 执行命令:

protoc ./student.proto --java_out=./

编解码技术- 序列化工具protobuf(入门教程)

5)main方法来测试protobuf生成类 序列化有何优点:

befo

<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java-util</artifactId>
    <version>3.5.0</version>
</dependency>
start:

@Test
public  void  test() throws InvalidProtocolBufferException {
    test.testbuf.Builder builder = test.testbuf.newBuilder();
    builder.setId(1);
    builder.setName("liudaxian");
    builder.setEmail("[email protected]");
    builder.addMylist(1);
    builder.addMylist(2);
    builder.addMylist(3);
    test.testbuf build = builder.build();
    System.out.println("before :"+ build.toString());
    System.out.println("===========Person Byte==========");
    for(byte b : build.toByteArray()){
        System.out.print(b);
    }
    System.out.println();
    System.out.println("byte的长度:"+build.toByteString().size());
    System.out.println("================================");

    //模拟接收Byte[],反序列化成Person类
    test.testbuf build2 = builder.build();
    byte[] byteArray =build2.toByteArray();
    test.testbuf testbuf = test.testbuf.parseFrom(byteArray);
    System.out.println("after :" +testbuf.toString());
    String jsonFormatM = "";
 

    jsonFormatM = JsonFormat.printer().print(testbuf);

    System.out.println(jsonFormatM.toString());
    System.out.println("json数据大小:" + jsonFormatM.getBytes().length);
    System.out.println("===== 使用gps 转成json对象结束 =====");
}

after:

编解码技术- 序列化工具protobuf(入门教程)


相关文章:

  • 2021-10-28
  • 2022-12-23
  • 2021-06-03
  • 2021-10-29
  • 2021-11-11
  • 2021-09-09
  • 2022-12-23
  • 2021-10-17
猜你喜欢
  • 2022-01-22
  • 2022-12-23
  • 2021-10-31
  • 2021-12-27
  • 2022-12-23
  • 2021-10-21
  • 2022-12-23
相关资源
相似解决方案