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);


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值