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

xson_org 发布于 2014/07/20 13:15
阅读 2K+
收藏 19
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的开源和其作者。

加载中
0
憨厚的瓜
憨厚的瓜

xson与java自带的序列化相比有什么优势呢?pojo不需要实现Serializable ?

0
x
xson_org

1.xson比java自带的序列化速度更快、体积更小。

2.pojo不需要实现Serializable

0
x
xson_org
在maven中如何配置xson依赖  

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




0
JackChu
JackChu
直接使用fastjson不行吗?
0
x
xson_org
一般情况下当然可以。不过如果你感兴趣或者有网络传输和Java系统间通讯 需要的话,可以从几个方面对比一下:

1.体积。
2.序列化和反序列化的速度。
3.复杂对象的支持情况。

0
JackChu
JackChu

简单测试了一下,性能比java内置的快好几倍。相对fastjson差了点

值得学习

0
steemit
steemit
对比一下protobuf
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部