论坛首页 Java企业应用论坛

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

浏览 4790 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-07-20   最后修改:2014-07-22

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.在maven中如何配置xson依赖 

<dependency>
	<groupId>com.github.xsonorg</groupId>
	<artifactId>xson-core</artifactId>
	<version>1.0.1</version>
</dependency>

 
5.使用示例 

1.使用xson进行对象到字节数组的序列化 

User user = new User();
//set....
byte[] data = XSON.write(user);

2.使用xson进行字节数组到对象的反序列化 

//byte[] data = XSON.write(user);
User user = XSON.parse(data);

6.用户扩展

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

   发表时间:2014-07-22  
楼主要做开源项目?
0 请登录后投票
   发表时间:2014-07-22  
iqeq00 写道
楼主要做开源项目?

此项目已经开源,如有兴趣,请关注此项目。
0 请登录后投票
   发表时间:2014-07-24  
楼主能否把该工具的效率和序列化后的长度给我们讲述一下,最好和现在比较流行的序列化工具进行对比一下。
0 请登录后投票
   发表时间:2014-07-25  
能不能跟目前主流的序列化库做一个横向对比
0 请登录后投票
   发表时间:2014-07-26   最后修改:2014-07-26
这是又要造一个轮子吗?说说你的理由啊,速度更快,或是弥补了其它框架的不足,还是就想练练手?
0 请登录后投票
   发表时间:2014-07-27   最后修改:2014-07-27
XSON框架性能对比测试
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics