protobuffer序列化
2024-10-15 02:47:26
一. 描述对象的proto文件
- 第一行package:对象经过protobuffer编译后形成java文件,这个文件放在按照package新建的文件夹内
- java_package:java类的包名
- java_outer_classname:java文件名,也是public class的名字
- message定义内部类Person,Person也是要序列化的类
- required表示该字段是必须字段,optional是可选字段
- repeated根据不同的消息类型解析数据包内的字段,用于自定义的类,数组等
package com.lj;
option java_package="com.lj";
option java_outer_classname="MyPerson"; message Person{
required string name=1;
required int32 id=2;
optional string email=3; message PhoneNumber{
required string number=1;
optional int32 type=2;
} repeated PhoneNumber phoneNumber=4;
}
二. 编译描述文件
protoc --proto_path=IMPORT_PATH --java_out=DST_DIR file.proto
三. 序列化与反序列化代码
- new Builder().build()方法创建序列化
- parseFrom()反序列化
public class TestProtocalBuffer {
/**
* protobuffer序列化 : 1.编写proto文件描述bean 2.命令生成代码 3.java代码调用
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException { MyPerson.Person p1 = MyPerson.Person.newBuilder()
.setName("lj").setId(25629).setEmail("lj72808up@163.com")
.addPhoneNumber(MyPerson.Person.PhoneNumber.newBuilder().setNumber("13905723516").setType(1)).build(); FileOutputStream os = new FileOutputStream("d://123.txt");
p1.writeTo(os); // 把文件
os.close(); } /**
* protobuffer读取文件反序列化成对象
* @throws IOException
*/
@Test
public void testRead() throws IOException {
FileInputStream is = new FileInputStream("d://123.txt");
MyPerson.Person person = MyPerson.Person.parseFrom(is);
System.out.println(person);
}
/** name: "lj"
id: 25629
email: "lj72808up@163.com"
phoneNumber {
number: "13905723516"
type: 1
} **/
}
最新文章
- Jquery初学
- WPF 中的image控件的Source如何赋值
- 轻松掌握:JavaScript代理模式、中介者模式
- angular 依赖注入原理
- &;和&;&;
- (48) odoo的button用法
- 第一篇英文短文《It All Starts With A Dream》
- 2013 Multi-University Training Contest 6
- 节点属性(DOM对象)
- lihgtoj 1006
- php 数组Array 删除指定键名值
- 七、Spring Boot Servlet 使用
- java游戏开发杂谈 - 游戏物体
- TK2 USB修复
- List Leaves
- O365 Manager Plus帮助台委派功能一览表
- Redis的数据结构之哈希
- Tsung 超详细的的tsung性能测试资料
- Django 自定义过滤器和模板标签
- jmeter bean shell断言加密的响应信息(加密接口测试二)
热门文章
- python3获取当前目录(转)
- 1-3 ISO/OSI七层模型详解
- phpwind8.7升级9.0.1过程(四)20130207升级到20141228
- Android——不同activity之间数据传递
- IAR MSP430如何生成烧写文件
- 两篇很牛的vim使用技巧
- The differences between Java EE components and ";standard"; Java classes
- 在Windows7上安装coreseek3.2同时在PHP下简单实现步骤
- dl,dt,dd,ul,li,ol区别
- SVG添加链接(转载)