ProtoBuf序列化尝试

ProtoBuf 是谷歌开源的序列化组件.二进制,速度快.

下载地址:
https://github.com/google/protobuf/releases/tag/v3.0.0

下载protobuf-java-3.0.0.zip文件之后,需要一台Linux服务器编译

我在Linux解压该文件之后,进入目录/tmp/protobuf-3.0.0

执行
./configure
make
make install

待编译之后,进入/tmp/protobuf-3.0.0/java 目录执行

mvn clean package

然后下载
/tmp/protobuf-3.0.0/java/core/target/protobuf-java-3.0.0.jar 文件至项目.

以example的示例文件为例
cd /tmp/protobuf-3.0.0/examples
protoc --java_out=/tmp addressbook.proto 

然后将/tmp下com目录添加到项目

测试代码:

  1. package com.example.tutorial;  
  2.   
  3. import java.io.ByteArrayInputStream;  
  4. import java.io.ByteArrayOutputStream;  
  5. import java.io.IOException;  
  6.   
  7. import com.example.tutorial.AddressBookProtos.AddressBook;  
  8. import com.example.tutorial.AddressBookProtos.Person;  
  9.   
  10. public class Test {  
  11.     public static void main(String[] args) throws IOException {  
  12.   
  13.         AddressBook.Builder addressBook = AddressBook.newBuilder();  
  14.         Person.Builder personBuilder = Person.newBuilder();  
  15.         personBuilder.setName("xiaohuali");  
  16.         personBuilder.setId(1);  
  17.         personBuilder.setEmail("youxiang");  
  18.         addressBook.addPeople(personBuilder.build());  
  19.   
  20.         personBuilder.setName("laohuali");  
  21.         personBuilder.setId(2);  
  22.         personBuilder.setEmail("youxiang");  
  23.         addressBook.addPeople(personBuilder.build());  
  24.   
  25.         //序列化过程  
  26.         AddressBook book = addressBook.build();  
  27.         ByteArrayOutputStream output = new ByteArrayOutputStream();  
  28.         book.writeTo(output);  
  29.         byte[] byteArray = output.toByteArray();  
  30.   
  31.         ByteArrayInputStream input = new ByteArrayInputStream(byteArray);  
  32.   
  33.         //反序列化  
  34.         AddressBook b = AddressBook.parseFrom(input);  
  35.   
  36.         System.out.println(b.toString());  
  37.     }  
  38. }  

结果:



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29254281/viewspace-2135419/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29254281/viewspace-2135419/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值