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值
Mapprop = new HashMap (); 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());
希望感兴趣的朋友能够参与和关注此项目,同时也希望得到大家的建议和帮助。
通讯邮箱:[email protected]
感谢:本项目的实现参考Fastjson的原理和部分结构,感谢Fastjson的开源和其作者。