java protobuf 反序列化_性能最好的序列化反序列化,Protobuf的用法(maven项目)
时间: 2023-07-18 22:33:22 浏览: 91
Java中有很多序列化反序列化的框架,其中Protobuf是一种性能非常好的序列化反序列化库。下面是Protobuf的用法(maven项目):
1. 首先,在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.17.3</version>
</dependency>
```
2. 创建Proto文件
定义一个proto文件,例如:person.proto
```protobuf
syntax = "proto3";
package com.example.protobuf;
message Person {
string name = 1;
int32 age = 2;
string email = 3;
}
```
在其中定义了一个Person对象,包含了name、age、email三个属性。
3. 生成Java类
使用protobuf的工具,将person.proto文件生成Java类:
```bash
protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/person.proto
```
其中,$SRC_DIR是存放person.proto文件的目录,$DST_DIR是生成Java类的目录。
4. 序列化和反序列化
使用生成的Java类,进行序列化和反序列化:
```java
// 创建一个Person对象
Person person = Person.newBuilder()
.setName("Alice")
.setAge(20)
.setEmail("alice@example.com")
.build();
// 将Person对象序列化成字节数组
byte[] bytes = person.toByteArray();
// 将字节数组反序列化成Person对象
Person newPerson = Person.parseFrom(bytes);
```
这样,就完成了Person对象的序列化和反序列化。
总结:Protobuf是一种性能非常好的序列化反序列化库,使用起来也非常简单。通过定义Proto文件,生成Java类,就可以对对象进行序列化和反序列化。
阅读全文