protobuf 是google 开发一个款序列化传输协议,它独立于语言,独立于平台;目前它提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。
下面介绍使用的是目前最新版本: 3.2
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.2.0</version>
</dependency>
http://download.csdn.net/download/zsj897897/9821364
将protoc-3.2.0-win32 解压到某一文件夹,在环境变量path路径(我的是:D:\software\protoc-3.2.0-win32\bin)
C:\Users\Administrator>protoc --version
libprotoc 3.2.0
Eclipse Marketplace --> 搜索 "protobuf-dt" 安装"protobuf-dt-2.2.1"
syntax="proto3"; # 使用协议版本
option java_outer_classname="SearchRequestEntity"; # 生成的.java 文件名称
message SearchRequest { # 最终对象名称同message 名称
string searchString =1;
int32 page_number = 2;
int32 page_size = 3;
}
protoc.exe -I=proto的输入目录 --java_out=java类输出目录 proto的输入目录包括包括proto文件
例如:
C:\Users\Administrator>protoc -I=D:/develporDir/CODE/workspace/test-protobuf/src
/main/java/com/jiazq/test/protobuf/proto --java_out=D:/develporDir/CODE/workspac
e/test-protobuf/src/main/java/com/jiazq/test/protobuf/entity D:/develporDir/COD
E/workspace/test-protobuf/src/main/java/com/jiazq/test/protobuf/proto/person-ent
ity.proto
package com.jiazq.test_protobuf;
import com.jiazq.test.protobuf.entity.PersionEntity;
public class PersionTest {
public static void main(String[] args) {
PersionEntity.Persion.Builder builder = PersionEntity.Persion.newBuilder();
builder.setEmail("281460530@qq.com");
builder.setOnline(true);
builder.setPassword("ricisung");
builder.setPhoneNumber("18320928860");
builder.setUserName("jiazq");
builder.setUserId(12345);
PersionEntity.Persion persion = builder.build();
System.out.println(persion.toString());
System.out.println("---------序列化开始----------");
for (byte b: persion.toByteArray()) {
System.out.print(b);
}
System.out.println();
byte[] byteArray = persion.toByteArray();
System.out.println("字节长度:" + byteArray.length);
System.out.println("字节长度:" + persion.toByteArray().length);
}
}
userId: 12345
userName: "jiazq"
password: "ricisung"
email: "281460530@qq.com"
phoneNumber: "18320928860"
online: true
---------序列化开始----------
8-71961851061059712211326811410599105115117110103341650564952544853514864113113469911110942114956515048575056565448481
字节长度:53
字节长度:53
---------反序列化开始-----
userId: 12345
userName: "jiazq"
password: "ricisung"
email: "281460530@qq.com"
phoneNumber: "18320928860"
online: true
http://blog.csdn.net/antgan/article/details/52103966