XSON是一个Java对象的序列化和反序列化框架。它支持将Java对象序列化为字节数组,并将其从字节数组反序列化为Java对象。
-
网址:http : //xson.org
-
项目地址:https://github.com/xsonorg/xson
新版本功能
-
新的缓冲包,这个包中的相关类,在分配,使用,回收管理的过程中提供了byte []的分配; 进一步提供序列化速度并减少Full GC。
-
提供具有偏移内容的API支持。
-
提供XCO对象序列化和反序列化支持。
-
提供对扩展配置文件的支持。
教程
基本使用
一个。添加依赖关系
<依赖性>
湾 序列化
User user = new User();
C。反序列化
// byte [] data
天。带偏移量的序列化和反序列化
int x = 6;
配置文件
我们来看看这个xson.properties文件配置示例,然后深入分析这些组件的含义:
#支持XCO
配置说明
Xco = true
打开对XCO对象的支持,默认不打开;
ByteArray.number
ByteArrayManager管理字节[] number,默认为100;
ByteArray.capacity
ByteArrayManager管理每个字节[]的容量,默认为512;
Java.util.ArrayList = 0
用户类名称自定义映射; 例如:当XSON序列化User对象时,序列化的类信息描述区域的结果将记录User类的类名,如org.xson。用户,如果我们org.xson.User = user
通过这个配置,user
只会记录在类信息描述区域中。这里,可以减少串行数据的音量。
注意:配置文件使用固定名称xson.properties
。使用时,请将其放在classpath根路径下。
自定义Serializer
这是一个用户定义的串行器和解串器:
public class CustomerSerializer实现XsonWriter {
2.添加用户定义的序列化器和解串器
XsonSupport.addCustomSerializer(User.class,new CustomerSerializer(),new CustomerDeserializer());
注意:串行器和解串器必须成对设置。
设计
类图设计
-
XSON:用户输入类,提供序列化和反序列化方法
-
WriterModel:序列化写入模型类
-
XsonWriter:序列化接口
-
ArraySerializer:对象数组序列化类
-
CollectionSerializer:Collection对象序列化类
-
枚举对象序列化类
-
MapSerializer:Map对象序列化类
-
其他Serializer:其他类型的对象序列化类,看源码
-
ReaderModel:反序列化阅读模型类
-
XsonReader:反序列化接口
-
CurrencyDeserializer:货币对象反转类
-
DateUtilDeserializer:时间对象反转类
-
LocaleDeserializer:区域对象反转类
-
LongDeserializer:长包装对象反转类
-
其他Deserializer:其他类型的对象反转类,请参见源代码
-
XsonConst:常量类,持有所有的序列化和反序列化类实例
byte []管理
-
浅绿色:
byte []
由ByteArrayManager
课堂管理,持有多个byte []
内容,同样如此;ByteArrayManager
在序列化过程中提供byte []
应用和回收管理。 -
深绿色:
byte []
在序列化期间暂时创建,不受ByteArrayManager
GC处理。 -
浅蓝色:
ByteArrayItem
上课; 基于byte []
包类,记录中的内容byte []
的capacity
,limit
所以对使用的属性; -
黄色:
XSONByteArray
上课; 保持一个或多个ByteArrayItem
内部的类,通过该原语类型,字符串,字节数组是序列化到byte []
所述的ByteArrayItem
类中;
ASM技术
对于Java Bean对象处理,XSON框架使用ASM技术为每个bean对象动态生成相应的Serializer和Deserializer,用于序列化和反序列化。