1. Xson 介绍
Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。
地址:https://github.com/xsonorg/xson
2.应用场景
可用于网络传输和Java系统间通讯等。
3.支持的对象类型
1.Java POJO对象
2.基本类型:byte,short,int,long,float,double,boolean,char
3.包装类型:Byte,Short,Integer,Long,Float,Double,Boolean,Character
4.String
5.Collection
6.Map
7.Enum
8.TimeZone
9.Class
10.BigDecimal
11.BigInteger
12.Class
13.StringBuffer
14.StringBuilder
15.URI
16.URL
17.UUID
18.Locale
19.Currency
20.TimeZone
21.java.util.Date
22.java.sql.Date
23.java.sql.Time
24.java.sql.Timestamp
25.InetAddress
26.Inet4Address
27.Inet6Address
28.InetSocketAddress
4.使用示例
1.使用xson进行对象到字节数组的序列化
User user = new User();
//set....
byte[] data = XSON.write(user);
2.使用xson进行字节数组到对象的反序列化
//byte[] data = XSON.write(user);
User user = XSON.parse(data);
5.用户扩展
1.在xson中添加用户对象类型的描述和其Key值
Map<String, String> prop = new HashMap<String, String>();
prop.put("org.xson.testmodel.XUser7", "x7");
prop.put("org.xson.testmodel.XUser6", "x6");
XsonSupport.addCustomAgreementType(prop);
说明:由于xson序列化后的byte[]中保存Class信息用以用于反序列化操作,比如一个POJO对象User,
全类名比如叫:org.xson.api.User,那么XSON.write(user)到达的byte[]中则保存着"org.xson.api.User"的
描述,但由于"org.xson.api.User"需要占用数个字节,为了减少byte[]体积,因此可使用上述方式通过给出
一个key值来代替"org.xson.api.User",以实现缩小体积的目标。
注意:
1.请在使用序列化的反序列化之前操作
2.如果序列化的结果用作双方通讯,请确保使用双方对象类型和Key值的一致性
2.用户自定义序列化器
public class CustomerSerializer implements XsonWriter {
@Override
public void write(Object target, ByteModel model) {
// Implementation code
}
}
3.用户自定义反序列化器
public class CustomerDeserializer implements XsonReader {
@Override
public Object read(ReaderModel model) {
// Implementation code
return null;
}
}
4.在xson中添加用户自定义的序列化器和反序列化器
XsonSupport.addCustomSupportType(XUser1.class, new CustomerSerializer(), new CustomerDeserializer());
希望感兴趣的朋友能够参与和关注此项目,同时也希望得到大家的建议和帮助。
通讯邮箱:xson_org@126.com
感谢:本项目的实现参考Fastjson的原理和部分结构,感谢Fastjson的开源和其作者。