`
xson_org
  • 浏览: 995 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Xson:Java对象序列化和反序列化工具

阅读更多

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的开源和其作者。 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics