protobuf使用簡介

1 protobuf介紹

Protobuf全稱Google Protocol Buffers
http://code.google.com/p/protobuf
結構化數據存儲格式(xml, json)
用於通信協議、數據存儲等
高效的序列化和反序列化
語言無關、平臺無關、擴展性好
官方支持C++, Java, Python三種語言

2 下載安裝

(1)下載

需要兩個包,protobuf-2.5.0.tar.gz,protoc-2.5.0-win32.zip。

本來可以到https://code.google.com/p/protobuf/downloads/list下載,不過被牆了。

可以移步到這裏下載:http://download.csdn.net/detail/erli11/7408633 

下載相同版本供java使用的protobuf-java-2.5.0.jar:

http://repo1.maven.org/maven2/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar

3 demo展示

(1)創建proto文件

在protoc-2.5.0-win32目錄(包含protoc.ext可執行文件),創建msg.proto

package discover;
option java_package = "com.sg.discover";
option java_outer_classname = "SocialRecommend";  

message RecommendInfo  {
	optional string hid = 1;
	optional string tags = 2;
	repeated TopicInfo topicList = 3;
}
  
message TopicInfo  {  
  optional string name = 1;
  optional string type = 2;         
  repeated string entities = 3;  
  repeated string tags = 4; 
} 


(2)使用如下命令編譯proto文件,生成對應Java代碼


注:編譯成功無消息輸出,會產生文件;

./ 與 msg.proto中間有空格

(3)序列化

	private SocialRecommend.RecommendInfo transRecommendInfoToPB(RecommendBean recommendInfo) {
		SocialRecommend.RecommendInfo.Builder builder = 
			SocialRecommend.RecommendInfo.newBuilder();
		builder.setHid(recommendInfo.hid);
		builder.setTags(recommendInfo.tags);
		for(int i = 0; i< recommendInfo.topicList.size(); i++){
			TopicInfo topicInfo = recommendInfo.topicList.get(i);
			SocialRecommend.TopicInfo kvTopic = trasnTopicInfoToPB(topicInfo);
			builder.addTopicList(kvTopic);
		}
		return builder.build();
	}
byte[] pbByteArray = pb.toByteArray();

(4)反序列化

SocialRecommend.RecommendInfo msg = SocialRecommend.RecommendInfo.parseFrom(pbByteArray);  
	        System.out.println(msg);


發佈了28 篇原創文章 · 獲贊 13 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章