【Google Protobuf】windows下protobuf的开发环境搭建和使用
protobuf,protobuf java2016-07-20
Protobuf是由谷歌开源而来,在谷歌内部久经考验。它将数据结构以.proto文件进行描述,通过代码生成工具可以生成对应数据结构的POJO对象和Protobuf相关的方法和属性。
特点如下:
以上是摘自http://blog.163.com/jekyll_zhou@126/blog/static/18204738201210303283975/的测试结果
枚举的定义形式和Java的Enum定义差不多,例如:
enum PhoneType {
MOBILE=0;
HOME=1;
WORK=2;
}
message,类似于C语言中的结构体。例如:
message Login
{
optional string username = 1;
optional string password = 2;
}字段名称的命名与C、C++、Java等语言的变量命名方式几乎是相同的。
protobuf建议字段的命名采用以下划线分割的驼峰式。例如 first_name 而不是firstName.
1900~2000编码值为Google protobuf 系统内部保留值,建议不要在自己的项目中使用。
1.创建一个新的工程Protobuf,将protoc.exe文件拷贝到当前目录
2.在protoc.exe同级目录创建helloworld.proto文件,代码如下
message Person {
// ID(必需)
required int32 id = 1;
// 姓名(必需)
required string name = 2;
// email(可选)
optional string email = 3;
// 朋友(集合)
repeated string friends = 4;
}
protoc.exe --java_out=./ helloworld.proto
4.编译后在当前目录多出来一个Helloworld.java文件
5.把Helloworld.java文件和protobuf-java-2.6.1.jar引入到eclipse项目
6.序列化代码
Helloworld.Person.Builder builder = Helloworld.Person.newBuilder();
builder.setId(1);
builder.setName("小毛驴");
builder.setEmail("1805348347@qq.com");
Helloworld.Person person = builder.build();
byte[] result = person.toByteArray();
try {
Helloworld.Person person1 = Helloworld.Person.parseFrom(result);
System.out.println(person1);
} catch (InvalidProtocolBufferException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
8.运行结果
id: 1
name: "\345\260\217\346\257\233\351\251\264"
email: "1805348347@qq.com"