protobuf基于java入门
1. 编写protobuf文件——person.proto
package protobuf;
option java_package="com.sean.person";
option java_outer_classname = "PersonEntity";
message Person{
required int32 id = 1;
required string name = 2;
optional string email=3;
repeated string friends = 4;
}
2.将protobuf文件转换为java代码
下载protoc.exe该工具
将person.proto加入到protoc.exe所在目录
命令行进入protoc.exe所在目录
执行
protoc ./person.proto --java_out=./
3.序列化
4.反序列化
public class Test {
public static void main(String[] args) throws IOException {
//实例化builder
PersonEntity.Person.Builder personBuilder = PersonEntity.Person.newBuilder();
//添加数据
personBuilder.setId(1).setName("Sean").setEmail("123@qq.com").addFriends("小明").addFriends("小黄");
//建立实体数据
PersonEntity.Person msg = personBuilder.build();
//将数据写入流中
ByteArrayOutputStream output = new ByteArrayOutputStream();
msg.writeTo(output);
byte[] bytes = output.toByteArray();
System.out.println("person size: "+bytes.length);
//读取流
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
PersonEntity.Person person = PersonEntity.Person.parseFrom(bis);
System.out.println("person ID: " + person.getId());
System.out.println("person name: " + person.getName());
System.out.println("person email: " + person.getEmail());
System.out.println("person friends: "+person.getFriendsList());
}
}