java protobuffer序列化_protobuf序列化使用说明

protobuf转换方法

编写protobuf代码如下:

package netty;

option java_package = "com.clq.netty.protoc";

option java_outer_classname = "SubsribeReqProto";

message SubScribeReq{

required int32 subReqID = 1;

required string userName = 2;

required string productName = 3;

repeated string address = 4;

}

package netty;

option java_package = "com.clq.netty.protoc";

option java_outer_classname = "SubsribeRespProto";

message SubScribeResp{

required int32 subReqID = 1;

required string respCode = 2;

required string desc = 3;

}

E:\tmp\protoc-2.5.0-win32> ./protoc.exe --java_out=./ SubscribeReq.proto

E:\tmp\protoc-2.5.0-win32> ./protoc.exe --java_out=./ SubscribeResp.proto

com.google.protobuf

protobuf-java

2.5.0

4 . 执行测试protobuf测试

package com.clq.netty.protoc;

import com.google.protobuf.InvalidProtocolBufferException;

import java.util.ArrayList;

import java.util.List;

/**

* Created by clq on 2018/7/24.

*/

public class TestSubsribeReqProto {

private static byte[] encode(SubsribeReqProto.SubScribeReq req) {

return req.toByteArray();

}

private static SubsribeReqProto.SubScribeReq decode(byte[] body) throws InvalidProtocolBufferException {

return SubsribeReqProto.SubScribeReq.parseFrom(body);

}

private static SubsribeReqProto.SubScribeReq createSubScripeReq() {

SubsribeReqProto.SubScribeReq.Builder builder = SubsribeReqProto.SubScribeReq.newBuilder();

builder.setSubReqID(1);

builder.setUserName("clq");

builder.setProductName("xxxx usb key");

List address = new ArrayList<>();

address.add("河南郑州");

address.add("河南洛阳");

builder.addAllAddress(address);

return builder.build();

}

public static void main(String[] args) {

SubsribeReqProto.SubScribeReq subScripeReq = createSubScripeReq();

System.out.println("Before encode:" + subScripeReq.toString());

SubsribeReqProto.SubScribeReq subScripeReq1 = createSubScripeReq();

System.out.println("After encode:" + subScripeReq1);

System.out.println("Assert equ:" + subScripeReq1.equals(subScripeReq));

}

}

5 . 打印结果

Before encode:subReqID: 1

userName: "clq"

productName: "xxxx usb key"

address: "\346\262\263\345\215\227\351\203\221\345\267\236"

address: "\346\262\263\345\215\227\346\264\233\351\230\263"

After encode:subReqID: 1

userName: "clq"

productName: "xxxx usb key"

address: "\346\262\263\345\215\227\351\203\221\345\267\236"

address: "\346\262\263\345\215\227\346\264\233\351\230\263"

Assert equ:true

转载至链接:https://my.oschina.net/u/1787735/blog/1863115

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值