简介:
protobuf 是 Google 的语言中立, 平台中立, 可扩展的机制, 用于序列化结构化数据 - 想想 xml, 但更小, 更快, 更简单. 您可以定义数据的结构化结构, 然后使用特殊生成的源代码轻松地将结构化数据写入和读取各种数据流, 并使用各种语言.
1. 在项目中导入依赖
- <dependency>
- <groupId>com.google.protobuf</groupId>
- <artifactId>protobuf-java</artifactId>
- <version>3.8.0</version>
- </dependency>
2. 创建 ReturnVO. proto 文件
- syntax = "proto3"; // PB 协议版本
- message ReturnVO{
- string code = 1; // 支付相关的字段信息
- string message = 2; // optional 为可选参数
- string data = 3; // required 为必填参数
- }
3. 使用 idea 进行生成 Java 文件 ReturnVOProto.java
idea 实现 protobuf 的. proto 文件编译成. java 文件教程
4. 使用 protobuf
- @Test
- public void contextLoads() {
- System.out.println("===== 构建一个 returnVO 模型开始 =====");
- ReturnVOProto.ReturnVO.Builder builder = ReturnVOProto.ReturnVO.newBuilder();
- builder.setCode("200");
- builder.setData("OK");
- builder.setMessage("GO");
- ReturnVOProto.ReturnVO returnVO = builder.build();
- System.out.println(returnVO.toString());
- System.out.println("===== 构建 returnVO 模型结束 =====");
- System.out.println("===== returnVO Byte 开始 =====");
- for(byte b : returnVO.toByteArray()){
- System.out.print(b);
- }
- System.out.println("\n" + "returnVO" + returnVO.toByteString().size());
- System.out.println("===== returnVO Byte 结束 =====");
- System.out.println("===== returnVO 反序列化生成对象开始 =====");
- ReturnVOProto.ReturnVO returnVO1 = null;
- try {
- returnVO1 =ReturnVOProto.ReturnVO.parseFrom(returnVO.toByteArray());
- } catch (InvalidProtocolBufferException e) {
- e.printStackTrace();
- }
- System.out.print(returnVO1.toString());
- System.out.println("===== returnVO 反序列化生成对象结束 =====");
- }
5. 结果
===== 构建一个 returnVO 模型开始 =====
- code: "200"
- message: "GO"
- data: "OK"
===== 构建 returnVO 模型结束 =====
===== returnVO Byte 开始 =====
- 10350484818271792627975
- returnVO13
===== returnVO Byte 结束 =====
===== returnVO 反序列化生成对象开始 =====
- code: "200"
- message: "GO"
- data: "OK"
===== returnVO 反序列化生成对象结束 =====
来源: https://yq.aliyun.com/articles/705896