Protostuff(官网:www.protostuff.io)是谷歌开发的一种数据交换格式工具,独立于语言和平台,类似于json。Google提供了多种语言的实现:java、c++、go和python。对象利用Protostuff序列化之后可读性比xml和json差,但是速度要快得多,空间占用也要小得多。
注意:Protostuff 只能直接序列化简单的pojo类。
简单的示例
1、引入相关的jar包
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff-core</artifactId>
<version>1.0.7</version>
</dependency>
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff-runtime</artifactId>
<version>1.0.7</version>
</dependency>
2、简单的pojo对象
public class User {
private String name;
//省略getter/setter和构造方法
}
3、测试和运行结果
public class ProtostuffTest {
private static RuntimeSchema<User> schema = RuntimeSchema.createFrom(User.class);
/**
* 序列化
* */
public static byte[] serializeByProtoStuff(final User user) {
byte[] bytes = ProtostuffIOUtil.toByteArray(user, schema,
LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));
return bytes;
}
/**
* 反序列化
* */
public static User deserializeProtoStuff(final byte[] bytes) {
if(bytes == null) {
return null;
}
User user = schema.newMessage();//创建一个空对象
ProtostuffIOUtil.mergeFrom(bytes, user, schema);//被反序列化到user中
return user;
}
/**
* 测试
* */
public static void main(String[] args) {
User user = new User("张三");
byte[] bytes = serializeByProtoStuff(user);
System.out.println("序列化完成-->");
User user2 = deserializeProtoStuff(bytes);
System.out.println(user2.toString());
}
}
序列化完成-->
User [name=张三]