1、
2、java实体类生成 proto文件
进入到实体类,右键
然后粘贴即可
3、proto生成java类的插件
proto数据类型映射
pom文件
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.20.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
<version>3.20.0</version>
<scope>runtime</scope>
</dependency>
测试代码
package com.example.demo.im;
import com.google.protobuf.InvalidProtocolBufferException;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
convertProto(1);
}
public static void convertProto(int value) {
//1.通过build创建消息构造器
//3.通过消息构造器构造消息对象
Test1OuterClass.Test1 data = Test1OuterClass.Test1.newBuilder()
.setAaa("aaa")
.setCccc(1233)
.build();
//4.序列化
byte[] bytes = data.toByteArray();
System.out.println(value + "序列化后的数据:" + Arrays.toString(bytes) + ",字节个数:" + bytes.length);
//5.反序列化
try {
Test1OuterClass.Test1 parseFrom = Test1OuterClass.Test1.parseFrom(bytes);
System.out.println("还原后的数据=" + parseFrom.getAaa());
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}
}
proto文件 test1.proto
syntax = "proto3";
message Test1 {
string aaa = 1;
map<string, Test1> map = 2;
uint32 cccc = 3;
}