1. 项目介绍
Xson是一个Java对象序列化和反序列化框架。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。
官网地址:http://xson.org
项目地址:https://github.com/xsonorg/xson
2. 新版本特性
- 新增
buffer
包,此包中的相关类提供对序列化过程中的byte[]进行分配、使用、回收的管理;进一步提供序列化的速度,并减少Full GC。 - 提供带有偏移内容的API支持;
- 提供XCO对象序列化和反序列的支持;
- 提供扩展配置文件的支持;
3. 使用教程
3.1 基本使用
a. 添加依赖
<dependency>
<groupId>org.xson</groupId>
<artifactId>xson</artifactId>
<version>1.0.2</version>
</dependency>
b. 序列化
User user = new User();
// set...
byte[] data = XSON.encode(user);
c. 反序列化
// byte[] data
User user = XSON.decode(data);
d. 带有偏移内容的序列化和反序列化
int x = 6;
User user = new User();
// set...
byte[] data = XSON.encode(x, user);
// byte[] data
User user = XSON.decode(x, data);
3.2 配置文件
1.xson.properties文件配置示例:
# Support for XCO
xco=true
# ByteArrayManager configuration
byteArray.number=100
byteArray.capacity=512
# User classname mapping configuration
java.util.ArrayList=0
java.util.EnumSet=1
java.util.HashSet=2
java.util.LinkedHashSet=3
java.util.LinkedList=4
java.util.Stack=5
java.util.TreeSet=6
java.util.Vector=7
java.util.EnumMap=8
java.util.HashMap=9
java.util.Hashtable=a
java.util.IdentityHashMap=b
java.util.LinkedHashMap=c
java.util.Properties=d
java.util.TreeMap=e
java.util.concurrent.ConcurrentHashMap=f
2.配置说明
xco=true
开启对XCO对象的支持,默认不开启;
byteArray.number
ByteArrayManager管理的byte[]数量,默认100;
byteArray.capacity
ByteArrayManager管理的每个byte[]的容量,默认512;
java.util.ArrayList=0
用户类名自定义映射;比如:当XSON序列化的User对象时,序列化结果的类信息描述区中会记录User类的全类名,如org.xson.User,如果我们通过此处配置org.xson.User=user
,那么类信息描述区中将只记录user
,此处配置可缩小序列化后数据的体积;
注意 配置文件使用固定名称xson.properties
,使用时请放入classpath根路径下。
3.3 自定义序列化处理器
1.用户自定义Serializer和Deserializer
public class CustomerSerializer implements XsonWriter {
@Override
public void write(Object target, ByteModel model) {
// Implementation code
}
}
public class CustomerDeserializer implements XsonReader {
@Override
public Object read(ReaderModel model) {
// Implementation code
return null;
}
}
2.添加用户自定义的Serializer和Deserializer
XsonSupport.addCustomSerializer(User.class, new CustomerSerializer(), new CustomerDeserializer());
注意: Serializer和Deserializer必须成对设置.
4. 技术设计
4.1 类图设计
- XSON:用户入口类,提供序列化和反序列化方法;
- WriterModel:序列化写入模型类;
- XsonWriter:序列化接口;
- ArraySerializer:对象数组序列化类;
- CollectionSerializer:集合对象序列化类;
- EnumSerializer:枚举对象序列化类;
- MapSerializer:Map对象序列化类;
- Other Serializer:其他类型对象序列化类,详见源码;
- ReaderModel:反序列化读取模型类;
- XsonReader:反序列化接口;
- CurrencyDeserializer:货币对象反列化类;
- DateUtilDeserializer:时间对象反列化类;
- LocaleDeserializer:地区对象反列化类;
- LongDeserializer:Long包装对象反列化类;
- Other Deserializ