[发明专利]对象序列化和反序列化方法及相关装置有效
申请号: | 201810150509.2 | 申请日: | 2018-02-13 |
公开(公告)号: | CN108415741B | 公开(公告)日: | 2020-08-04 |
发明(设计)人: | 周江;张丽;王建行;周洪斌;李建颖;罗德志;王枭 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 郭润湘 |
地址: | 518044 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 对象 序列 方法 相关 装置 | ||
本申请实施例公开了对象序列化和反序列化方法及相关装置,属于通信技术领域。该方法中序列化阶段获取对象的类型指针,对该对象进行序列化时将该类型指针一起进行序列化。这样,在反序列化时能够根据该类型指针确定对象的类型,达到无需指定对象的目标类型的目的,能够准确反序列化对象。此外,类型指针能够适用所有类型的对象,使得本方案的应用范围广。
技术领域
本申请实施例涉及通信技术领域,特别涉及对象序列化和反序列化方法及相关装置。
背景技术
newtonsoft.json是常用的序列化工具,其通过判断对象类型,将不同类型的数据进行Json序列化。如图1所示,左半部图表示序列化的对象,右半部图中内容为其序列化后的结果。具体的:
如果是基本类型(如int、float等),直接将值写入Json,例如将图1中i为int型,序列化结果中仅有其值为1,同理序列化结果中有f的值2.0、以及bool型的b值为ture。
如果是Class(类)或Struct(结构体),将遍历成员并获取其值,并将成员名及值Json序列化。如图1中数组型Vector,序列化结果中包括各成员x、y、z及其值。
反序列化时,通过指定目标类型,从Json中获取其值并赋值,从而达到还原对象的目的。
故此,现有技术中在进行反序列化时,需要指定对象的目标类型,导致反序列不方便。此外,若指定目标类型不准确,容易导致序列化结果出错。
发明内容
为了解决反序列化时需要指定目标类型导致反序列化操作不便且可能不准确的问题,本申请实施例提供了对象序列化和反序列方法及相关装置。所述技术方案如下:
根据本申请实施例的第一方面,提供了一种对象序列化方法,包括:
通过反射机制获取对象和与所述对象对应的类型指针;
根据所述对象的类型指针确定该对象的类型;
若该对象的类型为基本类型,则将该对象的类型指针、以及该对象的值进行序列化;
若该对象的类型不为基本类型的对象,则将该对象和该对象的各个成员对象各自的类型指针、成员对象的名称、以及成员对象的值进行序列化,其中,各成员对象的类型指针、名称和值在序列化结果中对应存储。
在一种可能的实施方式中,所述方法还包括:
根据预置的对象类型与类型ID(identification,标识)的对应关系,确定该对象对应的类型ID;
进行序列化时,将该对象的类型ID一起进行序列化。
在一种可能的实施方式中,所述方法还包括:
从对象的序列化结果中获取该对象的类型ID;
根据类型ID和显示方式之间的对象关系,确定该对象的显示方式;
根据确定的显示方式显示该对象。
在一种可能的实施方式中,所述方法还包括:
将完成序列化的对象存储在已序列化对象集合中;
获取该对象的类型指针之前,还包括:
确定该对象不在所述已序列化对象集合中。
在一种可能的实施方式中,获取与所述对象对应的类型指针之前,所述方法还包括:
确定该对象不为空对象。
在一种可能的实施方式中,根据所述对象的类型指针确定该对象的类型之后,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810150509.2/2.html,转载请声明来源钻瓜专利网。