一 代码位置
https://github.com/cakin24/spring-cloud-code/tree/master/ch19-1
二 编译protobuf
三 编译后通过下面代码测试
package cn.springcloud;
import cn.springcloud.proto.PersonModel;
import com.google.protobuf.InvalidProtocolBufferException;
public class PersonUseCase {
public static void main(String[] args) {
PersonModel.Person forezp= PersonModel.Person.newBuilder()
.setId(1)
.setName("forezp")
.setEmail("miles02@163.com").build();
for(byte b : forezp.toByteArray()){
System.out.print(b);
}
System.out.println("\n" + "bytes长度" + forezp.toByteString().size());
System.out.println("===== forezp Byte 结束 =====");
System.out.println("===== forezp 反序列化生成对象开始 =====");
PersonModel.Person forezpCopy = null;
try {
forezpCopy = PersonModel.Person.parseFrom(forezp.toByteArray());
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
System.out.print(forezpCopy.toString());
System.out.println("===== forezp 反序列化生成对象结束 =====");
}
}
四 测试结果
8118610211111410112211226151091051081011154850644954514699111109
bytes长度27
===== forezp Byte 结束 =====
===== forezp 反序列化生成对象开始 =====
id: 1
name: "forezp"
email: "miles02@163.com"
===== forezp 反序列化生成对象结束 =====
演示了使用Proto Buffer来序列化和反序列化一个Java对象的过程,这跟使用JSON进行序列化和反序列化类似。采用Proto Buffer序列化的数据可读性很差,但是数据体积很小,所以能够大大提高传输效率。