博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
protobuf序列化使用说明
阅读量:6201 次
发布时间:2019-06-21

本文共 2714 字,大约阅读时间需要 9 分钟。

hot3.png


protobuf转换方法

  1. 编写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;}

2 . 执行如下命令(首先下载proto.exe 地址:):

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

3 . 拷贝生成代码到IDE编辑器,下载地址见: 如果报错,则添加protobuf-java

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: 1userName: "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: 1userName: "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

你可能感兴趣的文章
JAVA常见算法题(三十一)---冒泡排序
查看>>
JSON相关
查看>>
Mysql启报错报The server quit without updating PID file
查看>>
使用CleanIISLog清除IIS记录
查看>>
.Could not reliably determine the server's fully
查看>>
链表集合
查看>>
linux中使用scp远程拷贝文件及文件夹
查看>>
LVM(Logical Volumn Manage)逻辑卷的常见使用方法
查看>>
详解个性化推荐五大最常用算法
查看>>
DotText源码学习——ASP.NET的工作机制
查看>>
Activemq判断队列存活脚本(一)
查看>>
liunx下修改ftp用户对网站的目录使用权限
查看>>
同步与异步&阻塞与非阻塞
查看>>
CentOS 7.0 安装apache
查看>>
OSwatcher on Exadata
查看>>
SNMP常用OID
查看>>
实战阿里云-路由模式工作并端口转发(端口映射)
查看>>
全美第一汽车公司?Naive!现在特斯拉要搞无人卡车啦
查看>>
图像处理_imgproc笔记(1)
查看>>
mysql编程的入门案例
查看>>