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

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

分享到:
评论

相关推荐

    Java对象序列化和反序列化工具Xson.zip

    Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven:  &lt;groupId&gt;com.github.xsonorg&lt;/groupId&gt;  &lt;artifactId&gt;xson-core  &lt;version&gt;1.0.1 ...

    序列化与反序列化.zip

    文档编写了序列化与反序列化的类,并附带了对应的XML文件,包括一个窗口按钮的触发演示,供...   1.XmlSerialization:执行序列化和反序列化的类    2.serializeXML:需要序列化的对象格式,决定了生成XML格式的。

    xSON:LTE时代网络质量的最佳保障

    xSON将网络管理的多个环节,如网络规划、调测、配置、运营、优化和管理等,通过智能化和自动化的方式进行了整合,大大减轻了人工操作的负担,同时提高了网络管理的效率和精确度。 具体来说,xSON的自配置功能可让新...

    基于Java的XSON通用对象设计源码

    该项目是一款基于Java语言的XSON通用对象设计源码,包含50个文件,涵盖40个Java源文件、3个PNG图片文件、2个Markdown文件、2个XML文件、1个Git忽略文件、1个LICENSE文件、1个MF文件,旨在提供一种高效的对象表示和...

    agileway:提供Java,Web,各种类库增强,应避免996。目前已支持feign,redis,datasource,shiro,httpclient,rest,codec,serialize等

    支持基于XSON序列化框架实现 提供基于Feign的RestService动态创建 提供基于easyjson的编码器,解码器 集成负载均衡功能 提供多种param Expander 筛选器: 访问日志过滤器 编码过滤器 rr过滤器 全局响应过滤器 休息...

    xson-lib:一个nodejs小型数据转换器

    var xson = require ( 'xson-lib' ) ; var json = xson . toJson ( xml_string ) ; var json_string = json . stringify ( json ) ; var xml = xson . toXml ( json_jsonstring , beautifier [ bool ] )

    W25Q32JVUUIQ 产品规格书pdf

    TFBGA封装提供了更高的集成度和更低的外形尺寸,适用于需要小型化设计的应用。 #### 四、操作模式 1. **读取模式**:支持单线、双线和四线SPI读取方式,其中四线模式可以实现最高25MHz的时钟频率。 2. **写入模式*...

    FLASH-W25Q16器件手册中文版本.pdf

    - WSON 6x5-mm & USON 2x3-mm/4x3-mm, XSON 4x4-mm封装:这些是小型表面贴装封装,适合紧凑型和高密度电路板设计。 - WLCSP封装:球栅阵列封装,进一步减小了设备的体积。 4. 引脚描述: - /CS (Chip Select):...

    W25Q32JVSSIQ 产品规格书pdf

    - **操作模式:**通过向Command引脚发送特定的指令序列来执行相应的操作。 综上所述,W25Q32JVSSIQ是一款高性能、高可靠性的3V 32M-Bit串行闪存,支持双SPI和四SPI操作模式,并提供多种封装形式以适应不同的应用...

    FLASH芯片W25Q16资料-华邦

    开发者需要编写函数来控制SPI总线,执行读写操作,如初始化SPI接口、发送命令序列、读取或写入数据块等。C语言的灵活性和广泛适用性使其成为与硬件交互的理想选择。 总结来说,W25Q16是一款高性能、高可靠性的串行...

    w25q32jv spi revf 05112017.pdf

    - **串行数据输入/输出(DI, DO 和 IO0, IO1, IO2, IO3)**:用于数据的读取和写入操作。 - **写保护(/WP)**:用于设置写保护功能,防止未经授权的数据写入。 - **HOLD(/HOLD)**:用于暂停正在进行的操作。 - **串行...

    W25Q16JVSSIQ 产品规格书pdf

    - **WSON 6x5-mm**、**USON 2x3-mm/4x3-mm**、**XSON 4x4-mm**:小型化封装,适用于空间受限的应用场景。 - **WLCSP**:晶圆级芯片尺寸封装,最小化了封装尺寸,适用于追求极致紧凑的设计。 #### 四、引脚描述 - *...

    Flash_W25Q32JV数据手册

    本文档是关于Flash_W25Q32JV数据手册的知识点总结,涵盖了Flash_W25Q32JV的概述、特性、包装类型和引脚配置、引脚描述、工作模式、读写操作、电气特性等方面的详细信息。 一、概述 Flash_W25Q32JV是一个3V 32M-BIT...

    W25Q64JVXGIQ 产品规格书pdf

    8. **紧凑封装**:采用SOIC、WSON、XSON、TFBGA 和 WLCSP 等封装形式,适合各种空间受限的应用场合。 #### 三、封装类型及引脚配置 ##### 1. SOIC 208-mil 封装 - **引脚配置**:包括电源引脚、地址输入/输出引脚...

    浅谈LTE时代网络质量的保障--xSON

    沿用2G和3G网络中的传统网络规划,已经不再现实,此时,一个化繁为简、提升网络容量和保障网络质量的SON(自组织网络)就显得尤为必要。  SON是指网络具有一系列的自主智能功能,比如自我配置、自我规划、

    W25Q16JVSNIQ 产品规格书pdf

    - **WSON 6x5-mm & USON 2x3-mm/4x3-mm, XSON 4x4-mm**: - 小型封装形式,适用于空间受限的应用场合。 - 提供紧凑的封装尺寸,同时保持良好的电气性能。 - **WLCSP**: - 超小型封装,特别适合于便携式设备和高...

    W25Q64JVSSIQ 产品规格书pdf

    - **WLCSP**:晶圆级芯片尺寸封装,进一步减小了封装体积,适用于微型化的产品设计。 #### 四、引脚描述 - **SOIC 208-mil, WSON 6x5-mm/ 8x6-mm, XSON 4x4-mm**:这些封装类型的引脚描述相似,主要包括 Vcc(电源...

    W25Q64JV技术手册

    6. **多种封装类型**:包括SOIC 208-mil、WSON 6x5-mm/8x6-mm、XSON 4x4-mm和TFBGA 8x6-mm等封装选项。 #### 三、封装类型与引脚配置 1. **SOIC 208-mil** - **引脚配置**:参见手册具体细节。 - **引脚描述**:...

    通信与网络中的浅谈LTE时代网络质量的最佳保障--xSON

    沿用2G和3G网络中的传统网络规划,已经不再现实,此时,一个化繁为简、提升网络容量和保障网络质量的SON(自组织网络)就显得尤为必要。  SON是指网络具有一系列的自主智能功能,比如自我配置、自我规

    W25Q64FVSSIQ数据手册,有需要的自行下载

    - WSON封装提供6x5mm和8x6mm两种尺寸,XSON封装为4x4mm,适用于空间有限的应用。 - PDIP封装有300-mil引脚,适合于传统电路板设计。 - TFBGA封装和WLCSP封装则提供了更紧凑的解决方案,尤其适合高密度、小型化的...

Global site tag (gtag.js) - Google Analytics