当前位置: 首页 > Java > 正文

java中使用protobuf序列化(反序列化)

关键字:
1 星2 星3 星4 星5 星 (2 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

1.http://code.google.com/p/protobuf/downloads/list ,选择其中的win版本下载
2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的proto.exe版本相同,否则可能出现编译通不过现象)
3.在proto.exe同级目录,编写一个msg.proto文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
package Feinno.Practice.Learn;
 
option java_package = "Feinno.Practice.Learn";
option java_outer_classname = "ProtoBufferPractice";
 
message msgInfo  {
  required int32 ID = 1;
  required int64 GoodID = 2;       
  required string Url = 3;
  required string Guid = 4;
  required string Type = 5;
  required int32 Order = 6;
}

4.使用如下命令编译这个文件:
protoc.exe –java_out=./ msg.proto
5.将生成的ProtoBufferPractice.java文件引入eclipse
6.把下载的protobuf-java-2.4.1.jar也引入工程
7.使用方法(序列化)

1
2
3
4
5
6
7
8
9
10
ProtoBufferPractice.msgInfo.Builder builder=ProtoBufferPractice.msgInfo.newBuilder();
    builder.setGoodID(100);
    builder.setGuid("11111-23222-3333-444");
    builder.setOrder(0);
    builder.setType("ITEM");
    builder.setID(10);
    builder.setUrl("http://xxx.jpg");
    ProtoBufferPractice.msgInfo info=builder.build();
 
    byte[] result=info.toByteArray() ;

8.反序列化:

1
2
3
4
5
6
7
try{
        ProtoBufferPractice.msgInfo msg = ProtoBufferPractice.msgInfo.parseFrom(result);
        System.out.println(msg);
    }
    catch(Exception ex){
        System.out.println(ex.getMessage());
    }

本文固定链接: http://www.chepoo.com/using-protobuf-java-serialization-deserialization.html | IT技术精华网

java中使用protobuf序列化(反序列化):等您坐沙发呢!

发表评论