发明名称 |
序列化装置和序列化方法 |
摘要 |
本发明提供了一种序列化装置,包括:第一判断单元,判断源对象的类型是否为预设简单类型;第一转换单元,为预设简单类型时,将源对象的状态信息转换为待存储数据;第一获取单元,为预设复杂类型时,获取源对象中属性值不为空的属性,并根据属性生成相应的描述数据,将描述数据缓存至临时字节流中;计算单元,用于计算描述数据的字节流长度和结果数据的字节流长度之和;存储单元,用于将待存储数据保存至目标字节流中,并将源对象的字节流长度序列化至目标字节流中,将描述数据和结果数据保存至目标字节流中。本发明还提出了一种序列化方法。通过本发明的技术方案,能够提高序列化的通用性,提高序列化的效率,减少序列化后数据占用的存储空间。 |
申请公布号 |
CN102981884B |
申请公布日期 |
2016.03.30 |
申请号 |
CN201210480564.0 |
申请日期 |
2012.11.22 |
申请人 |
用友优普信息技术有限公司 |
发明人 |
蒋生锋 |
分类号 |
G06F9/45(2006.01)I |
主分类号 |
G06F9/45(2006.01)I |
代理机构 |
北京友联知识产权代理事务所(普通合伙) 11343 |
代理人 |
尚志峰;汪海屏 |
主权项 |
一种序列化装置,其特征在于,包括:第一判断单元,用于在所述序列化装置对源对象进行序列化时,判断所述源对象的类型是否为预设简单类型,若不是,则判定所述源对象的类型为预设复杂类型;第一转换单元,用于在所述源对象的类型为预设简单类型的情况下,将所述源对象的状态信息转换为待存储数据;第一获取单元,用于在所述源对象的类型为预设复杂类型的情况下,获取所述源对象中属性值不为空的属性,并根据所述属性生成相应的描述数据,将所述描述数据缓存至临时字节流中,以及根据所述属性对应的类型对所述属性的值进行序列化,并将序列化的结果数据缓存至所述临时字节流中;计算单元,用于计算所述描述数据的字节流长度和所述结果数据的字节流长度之和,以作为所述源对象的字节流长度;存储单元,用于将所述待存储数据保存至目标字节流中,并将所述源对象的字节流长度序列化至所述目标字节流中,以及将所述描述数据和所述结果数据保存至所述目标字节流中;其中,所述存储单元还用于将所述源对象的类型对应的标识保存至所述目标字节流中;所述第一获取单元还用于获取所述目标字节流中的所述标识;以及所述序列化装置还包括:第二判断单元,用于根据所述标识判断待反序列化的数据的类型是否为预设简单类型;第二获取单元,用于在所述第二判断单元的判断结果为是的情况下,获取所述目标字节流中除了所述标识对应的字节的其他字节,并将所述其他字节转换为相应的对象;第三判断单元,用于判断源对象和所述相应的对象的类型是否相同;第二转换单元,用于在所述第三判断单元的判断结果为否的情况下,将所述相应的对象的类型转换为所述源对象的类型;第一数值返回单元,用于将所述相应的对象赋值给所述源对象,或将转换后的所述相应的对象赋值给所述源对象;第三获取单元,用于在所述第二判断单元的判断结果为否的情况下,从所述临时字节流中获取所述描述数据,并获取所述源对象中的目标属性的信息,查询与所述目标属性的名称相同的所述描述数据所描述的属性,根据所述描述数据反序列化出对象;第四判断单元,用于判断反序列化出来的对象的类型和所述源对象的类型是否相同;第三转换单元,用于在所述第四判断单元的判断结果为否的情况下,将所述反序列化出来的对象的类型转换为所述源对象的类型;第二数值返回单元,用于将所述反序列化出来的对象赋值给所述源对象的相应的属性,或将转换后的对象赋值给所述源对象的相应的属性。 |
地址 |
100094 北京市海淀区北清路68号院2号楼2层 |