简介:
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 反序列化生成对象结束 =====