CN106294385A - 数据对象序列化和反序列化数据对象的方法及装置 - Google Patents

数据对象序列化和反序列化数据对象的方法及装置 Download PDF

Info

Publication number
CN106294385A
CN106294385A CN201510256172.XA CN201510256172A CN106294385A CN 106294385 A CN106294385 A CN 106294385A CN 201510256172 A CN201510256172 A CN 201510256172A CN 106294385 A CN106294385 A CN 106294385A
Authority
CN
China
Prior art keywords
attribute
root
text
property value
data object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510256172.XA
Other languages
English (en)
Inventor
刘志敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510256172.XA priority Critical patent/CN106294385A/zh
Publication of CN106294385A publication Critical patent/CN106294385A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据对象序列化和反序列化数据对象的方法及装置。其中,数据对象序列化方法包括:获取数据对象;将所述数据对象作为参数,调用序列化函数,获取所述数据对象中包括的根属性;根据所述根属性在所述数据对象中的位置,生成文本路径;获取所述根属性对应的属性值对象,将所述属性值对象转换为文本值;将对应相同所述根属性的所述文本路径和所述文本值通过等号相连形成属性值对的文本格式,生成各个所述根属性的序列化结果。本申请能够简化数据对象描述的层次结构,提高对数据查询、修改的效率。

Description

数据对象序列化和反序列化数据对象的方法及装置
技术领域
本申请涉及计算机应用技术领域,尤其涉及一种数据对象序列化和反序列化数据对象的方法及装置。
背景技术
序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
传统的序列化方法有:JavaBuildIn、hessian、xml、Json等,其中,JavaBuildIn、hessian是基于二进制的序列化方法,序列化出来的数据是不可读的。xml是基于文本的序列化方法,但是由于xml的结构特性,序列化出来的文本数据结构繁锁,冗余严重。
相对而言,目前较为常用的Json序列化方法是基于JavaScript语法的一种格式,将数据对象表示成由{、}、[、]等符号来表达层次关系,字段名与值之间通过冒号“:”分隔的一种文本序列化方法。传统的Json格式序列化方法生成的文本格式特点是数据的层次结构比较复杂。因此,在一些不能进行反序列化,只能直接访问文本格式的场景下(如:存储在数据库的字段中时),由于Json格式是一个大文本串,要找出其中某部分文本数据所在的位置是比较困难的。此外,如果需要将某部分文本内容修改为其它内容时,将会更加难以实现。
发明内容
本申请实施例提供一种数据对象序列化和反序列化数据对象的方法及装置,能够简化数据对象描述的层次结构,提高对数据查询、修改的效率。
一种数据对象序列化方法,包括:
获取数据对象;
将所述数据对象作为参数,调用序列化函数,获取所述数据对象中包括的根属性;
根据所述根属性在所述数据对象中的位置,生成文本路径;
获取所述根属性对应的属性值对象,将所述属性值对象转换为文本值;
将对应相同所述根属性的所述文本路径和所述文本值通过等号相连形成属性值对的文本格式,生成各个所述根属性的序列化结果。
进一步,所述获取所述数据对象中包括的根属性,包括:
获取所述数据对象的属性;
获取所述属性的类;
根据所述类,确定所述属性是否为所述根属性类型。
进一步,还包括:
当确定所述属性为具有层级关系的非根属性时,将所述非根属性序列化为根属性。
进一步,所述将所述非根属性序列化为根属性,包括:
将所述非根属性的属性值对象作为参数,调用所述序列化函数,对所述非根属性的属性值对象进行序列化。
一种反序列化数据对象方法,包括:
获取已被序列化为文本路径和文本值通过等号相连形成的属性值对文本;
将所述属性值对文本和反序列化后的目标类作为参数,调用反序列化函数,创建符合所述目标类的空对象,所述空对象中的属性值为空;
遍历所述属性值对文本,获取所述属性值对文本中的根属性;
获取所述根属性对应的文本值;
将所述根属性对应的文本值转换为所述目标类中对应所述根属性的类型,并赋值给所述空对象中的所述根属性。
进一步,还包括:
判断所述属性值对文本中是否存在与所述根属性具有相同路径前缀的属性;
如果存在与所述根属性具有相同路径前缀的属性,则确定所述根属性下具有下级非根属性;
调用所述反序列化函数,创建符合所述根属性对应类的空对象;
遍历对应所述下级非根属性的属性值对文本,获取所述下级非根属性;
获取所述下级非根属性对应的文本值,将所述下级非根属性对应的文本值转换为所述下级非根属性的类型,并赋值给所述根属性对应类的空对象中的所述下级非根属性。
一种数据对象序列化装置,包括:
数据对象获取模块,用于获取数据对象;
根属性获取模块,用于将所述数据对象作为参数,调用序列化函数,获取所述数据对象中包括的根属性;
根属性文本路径生成模块,用于根据所述根属性在所述数据对象中的位置,生成文本路径;
根属性文本值获取模块,用于获取所述根属性对应的属性值对象,将所述属性值对象转换为文本值;
根属性属性值对生成模块,用于将对应相同所述根属性的所述文本路径和所述文本值通过等号相连形成属性值对的文本格式,生成各个所述根属性的序列化结果。
进一步,所述根属性获取模块,包括:
属性获取单元,用于获取所述数据对象的属性;
类获取单元,用于获取所述属性的类;
属性类型确定单元,用于根据所述类,确定所述属性是否为所述根属性类型。
进一步,还包括:
非根属性序列化模块,用于当确定所述属性为具有层级关系的非根属性时,将所述非根属性序列化为根属性。
进一步,所述非根属性序列化模块,具体将所述非根属性的属性值对象作为参数,调用所述序列化函数,对所述非根属性的属性值对象进行序列化。
一种反序列化数据对象装置,包括:
属性值对文本获取模块,用于获取已被序列化为文本路径和文本值通过等号相连形成的属性值对文本;
第一空对象创建模块,用于将所述属性值对文本和反序列化后的目标类作为参数,调用反序列化函数,创建符合所述目标类的空对象,所述空对象中的属性值为空;
根属性获取模块,用于遍历所述属性值对文本,获取所述属性值对文本中的根属性;
根属性文本值获取模块,用于获取所述根属性对应的文本值;
根属性文本值转换模块,用于将所述根属性对应的文本值转换为所述目标类中对应所述根属性的类型,并赋值给所述空对象中的所述根属性。
进一步,还包括:
路径判断模块,用于判断所述属性值对文本中是否存在与所述根属性具有相同路径前缀的属性;
属性确定模块,用于如果存在与所述根属性具有相同路径前缀的属性,则确定所述根属性下具有下级非根属性;
第二空对象创建模块,用于调用所述反序列化函数,创建符合所述根属性对应类的空对象;
非根属性获取模块,用于遍历对应所述下级非根属性的属性值对文本,获取所述下级非根属性;
非根属性文本值获取模块,用于获取所述下级非根属性对应的文本值;
非根属性文本值转换模块,用于将所述下级非根属性对应的文本值转换为所述下级非根属性的类型,并赋值给所述根属性对应类的空对象中的所述下级非根属性。
本申请实施例中,通过序列化,获取数据对象中包括的根属性,根据根属性在数据对象中的位置,生成文本路径,同时,获取根属性对应的属性值对象,将属性值对象转换为文本值,从而,将复杂的数据对象中的每个根属性的描述转换为简单的属性值对的文本形式,其中,每个属性值对中,一边为根属性在数据对象中的文本路径,另一边为根属性属性值对应的文本值,文本路径和文本值通过等号相连。由此,大大简化数据对象描述中的层次结构和值关系,从而能够解决传统序列化方法中层次结构复杂及直接访问文本格式场景下查询和修改文本内容困难的问题,提高对数据查询、修改的效率,使得数据对象更易维护。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例中一种数据对象序列化方法的流程图;
图2为本申请实施例中类的示意图;
图3为对应图2中类的类对象示意图;
图4为图3中的类对象在内存中的数据结构示意图;
图5为本申请实施例中属性值对的示意图;
图6为图1中步骤102的实现流程示意图;
图7为在图3所示的应用场景下,数据对象序列化的整体流程示意图;
图8为本申请实施例中序列化结果的示意图;
图9为本申请实施例中一种反序列化数据对象方法的流程图;
图10为本申请实施例中另一种反序列化数据对象方法的流程图;
图11为以图8所示序列化结果为例,反序列化数据对象方法的流程图;
图12为本申请实施例中一种数据对象序列化装置的结构示意图;
图13为图12中根属性获取模块的结构示意图;
图14为本申请实施例中另一种数据对象序列化装置的结构示意图;
图15为本申请实施例中一种反序列化数据对象装置的结构示意图;
图16为本申请实施例中另一种反序列化数据对象装置的结构示意图
具体实施方式
为了使本申请所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的一种数据对象序列化方法,能够简化数据对象描述的层次结构,提高对数据查询、修改的效率。
在图1所述的实施例中,该数据对象序列化方法具体包括:
步骤101、获取数据对象。
该步骤中,在进行数据对象序列化之前,需要首先获取该数据对象。
本发明实施例中,数据对象通常为类对象。例如:针对图2所示的类,通常会创建一个类对象,如图3所示,其中,创建出的类对象名为“test”,针对该test对象,会在内存中为其开辟相应的空间,该test对象在内存中会形成如图4所示的数据结构。
步骤102、将数据对象作为参数,调用序列化函数,获取数据对象中包括的根属性。
该步骤中,将数据对象作为参数,调用序列化函数,开始对该数据对象进行序列化。首先,序列化函数会通过反射技术,获取数据对象中包括的根属性。例如:序列化函数通过反射技术,会获取图3所示的test对象中的根属性:name和postDate。
需要说明的是,本申请所述的“根属性”是指:数据对象最末级的属性,也可以称之为“叶子属性”。根属性的数据类型可以为简单类型,简单类型是指如下类型中的任意一种:int、char、long、boolean、byte、double、float、short、Integer、Character、Long、Boolean、Byte、Double、Float、Short、Enum、Date、Class。
为了描述简便,将本发明实施例中的序列化方法取名为Prop,后面提到该序列化方法时都用Prop代替。
步骤103、根据根属性在数据对象中的位置,生成文本路径。
该步骤中,根据当前属性的所在位置,生成相应的文本路径。例如:图3所示的test对象中,根属性name的路径为test.name,根属性postDate的路径为test.postDate。关于文本路径的生成规范将在后面通过专门表格进行说明。
步骤104、获取根属性对应的属性值对象,将属性值对象转换为文本值。
该步骤中,继续从数据对象中获取根属性对应的属性值对象,并且,需要将属性值对象转换为相应的文本值。例如:图3所示的test对象中,根属性name的属性值“名称”本身就是文本,因此不需进行文本转换;根属性postDate的属性值对象是一个Date类型的对象,序列化后的Prop文本为“2014-09-02 12:00:01”。将属性值对象转换为文本值的规范也将在后面通过专门表格进行说明。
步骤105、将对应相同根属性的文本路径和文本值通过等号相连形成属性值对的文本格式,生成各个根属性的序列化结果。
该步骤中,将相同的根属性对应的文本路径和文本值通过等号“=”连接,形成属性值对的文本形式,通常,为了使得属性值对文本数据结构更加简单,每个根属性对应的属性值对占用一行。例如:如图5所示,图3所示的test对象中,根属性name对应的属性值对文本为:test.name=名称;根属性postDate对应的属性值对文本为:test.postDate=2014-09-0212:00:01。至此,完成对各个根属性的序列化。
本申请实施例中,通过序列化,获取数据对象中包括的根属性,根据根属性在数据对象中的位置,生成文本路径,同时,获取根属性对应的属性值对象,将属性值对象转换为文本值,从而,将复杂的数据对象中的每个根属性的描述转换为简单的属性值对的文本形式,其中,每个属性值对中,一边为根属性在数据对象中的文本路径,另一边为根属性属性值对应的文本值,文本路径和文本值通过等号相连。由此,大大简化数据对象描述中的层次结构和值关系,从而能够解决传统序列化方法中层次结构复杂及直接访问文本格式场景下查询和修改文本内容困难的问题,提高对数据查询、修改的效率,使得数据对象更易维护。
为了便于对本申请技术方案的理解,下面通过具体实施例,对相关技术实现过程进行进一步的解释说明。
在本申请提供的一个实施例中,上述步骤102中,获取数据对象中包括的根属性的方法流程如图6所示,具体包括:
步骤601、获取数据对象的属性;
步骤602、获取属性的类(class);
步骤603、根据类,确定属性是否为根属性类型。
该实施例示出了确定数据对象中根属性的方式,具体为,根据数据对象包含各个属性所属的类,确定该属性是否为根属性。对应根属性,不需要通过迭代进行属性的序列化。
相应地,如果根据数据对象包含各个属性所属的类,确定该属性为非根属性,即:当前属性包括其他的下级子属性。例如:图3所示的test对象中,属性offers即为非根属性,其下还包括下级属性elementData。
对于非根属性,需要将其序列化为根属性,具体地,将非根属性的属性值对象作为参数,调用序列化函数,对非根属性的属性值对象进行序列化。
下面以图3所示的test对象为例,对前述数据对象序列化的整体流程进行完整的说明,完整的流程如图7所示,具体可以包括以下步骤:
步骤701、传入数据对象test;
步骤702、将数据对象test做为参数,调用序列化函数,获取数据对象test中包括的三个属性:name、postDate和offers。
步骤703、遍历上一步获得的属性,获取每一个属性的类(class)。
步骤704、根据各个属性的class,判断相应属性是否为根属性;如果存在非根属性,则继续步骤705;如果为根属性,则继续步骤706;
步骤705、对当前非根属性的属性值对象通过迭代进行序列化,将非根属性序列化为根属性;之后,转入执行步骤706;
步骤706、根据根属性在数据对象中的位置,生成文本路径;
步骤707、将根属性对应的属性值对象转换为文本值;
步骤708、将对应相同根属性的文本路径和文本值通过“=”相连,形成属性值对的文本格式;
步骤709、判断是否还有同级属性未序列化;如果有,则转入执行步骤703;如果无,则继续执行步骤710;
步骤710、输出数据对象中所有属性的序列化结果。
其中,部分序列化结果如图8所示。可见,序列化后的文本数据结构简单,一行文本表示一个属性,每行文本中等号前面的是属性在数据对象中的位置路径,位置的层次关系通过点号“.”相连,如:“test.name=名称”这一行,其中,“名称”是name属性的属性值;“test.name”是name属性在数据对象中的路径,由于name是数据对象test的属性,所以用“.”号连接在test后面,用来表示层级关系。
考虑到数据对象中字段类型的多样性,本申请对文本路径的格式做了如下规范要求:
表1 文本路径格式规范
此外,考虑到数据对象中字段值类型的多样性,对字段值的字段串格式也制定了一些规范要求,如下表:
表2 文本值规范
相应上述数据对象序列化方法,本申请还相应提供了一种反序列化数据对象方法,可以将序列化后的属性值对文本对象快速转换为数据对象。
如图9所示的实施例中,反序列化数据对象方法具体可以包括:
步骤901、获取已被序列化为文本路径和文本值通过等号相连形成的属性值对文本。
本发明实施例中,进行反序列化的对象为:已经序列化为属性值对的文本对象,该文本对象包括:通过等号相连的文本路径和文本值,其中,文本路径对应反序列化之后的数据对象中根属性在其中的位置,文本值对应根属性对应的属性值对象。
步骤902、将属性值对文本和反序列化后的目标类作为参数,调用反序列化函数,创建符合目标类的空对象,空对象中的属性值为空。
该步骤中,首先需要创建符合反序列化后的数据对象所属类的空对象,具体的创建方式为:将属性值对文本和反序列化后的目标类作为参数,调用反序列化函数,创建一个空对象,空对象中的属性值为空。
步骤903、遍历属性值对文本,获取属性值对文本中的根属性。
该步骤中,当创建空对象之后,需要继续遍历属性值对文本,以获取属性值对文本中的根属性。
步骤904、获取根属性对应的文本值。
该步骤中,当获取到属性值对文本中的根属性之后,便可以进一步获取属性值对文本中的根属性对应的文本值。
步骤905、将根属性对应的文本值转换为目标类中对应根属性的类型,并赋值给空对象中的根属性。
该步骤中,将获取到的根属性对应的文本值转换为目标类中对应根属性的类型,并通过赋值操作,对前述空对象中的根属性进行赋值,从而,完成将序列化后的属性值对文本对象转换为数据对象。
该实施例中,将文本值转换为特定类型的过程是前述序列化中的转换过程的逆过程,此处不再进行赘述。
由于在序列化后的属性值对文本对象中,除了根属性之外,还可能存在非根属性,非根属性与其所属的根属性的区别在于:二者的文本路径具有相同的路径前缀,例如:属性offers对应的文本路径是test.offers,属性值对文本test.offers.[0].status=NEW中的文本路径为:test.offers.[0].status,可见,两个文本路径具有相同的路径前缀,因此,属性status是属性offers的下级属性,需要对这类非根属性进行迭代处理。对应该种情形,在本申请的另一个实施例中,如图10所示,还可以包括以下执行步骤:
步骤906、判断属性值对文本中是否存在与根属性具有相同路径前缀的属性,如果存在与根属性具有相同路径前缀的属性,则执行步骤907;
步骤907、确定根属性下具有下级非根属性;
步骤908、调用反序列化函数,创建符合根属性对应类的空对象;
步骤909、遍历对应下级非根属性的属性值对文本,获取下级非根属性;
步骤910、获取下级非根属性对应的文本值,将下级非根属性对应的文本值转换为下级非根属性的类型,并赋值给根属性对应类的空对象中的下级非根属性。
通过上述迭代处理,获得属性值对文本中存在的非根属性的所有下级属性,并对所有下级属性进行文本值转换,实现对数据对象中的相应下级非根属性进行赋值。
为了便于理解,下面以图8所示的属性值对文本为例,对前述反序列化的整体流程进行完整的说明,完整的流程如图11所示,具体可以包括以下步骤:
步骤1101、传入Prop文本,即:多行属性值对文本;
步骤1102、将属性值对文本和反序列化后的目标类作为参数,调用反序列化函数,创建符合目标类的空对象;
步骤1103、遍历属性值对文本;
步骤1104、通过反射获取空对象的各个属性;
步骤1105、查询属性值对文本中的根属性;
步骤1106、判断是否获取相应的根属性,如果是,则继续步骤1107;否则,转入执行步骤1103;
步骤1107、判断是否存在非根属性;如果是,则继续步骤1109;否则,继续执行步骤1108;
步骤1108、将根属性对应的文本值转换为目标类中对应根属性的类型,并赋值给空对象中的根属性;
步骤1109、调用反序列化函数,创建符合根属性对应类的空对象;
步骤1110、迭代获取下级非根属性;
步骤1111、将下级非根属性对应的文本值转换为下级非根属性的类型,并赋值给根属性对应类的空对象中的下级非根属性。
基于同一发明构思,本申请实施例还提供的一种数据对象序列化装置,该装置的结构如图12所示,包括:
数据对象获取模块1201,用于获取数据对象;
根属性获取模块1202,用于将数据对象作为参数,调用序列化函数,获取数据对象中包括的根属性;
根属性文本路径生成模块1203,用于根据根属性在数据对象中的位置,生成文本路径;
根属性文本值获取模块1204,用于获取根属性对应的属性值对象,将属性值对象转换为文本值;
根属性属性值对生成模块1205,用于将对应相同根属性的文本路径和文本值通过等号相连形成属性值对的文本格式,生成各个根属性的序列化结果。
在实际应用场景中,如图13所示,上述根属性获取模块,具体可以包括:
属性获取单元1301,用于获取数据对象的属性;
类获取单元1302,用于获取属性的类;
属性类型确定单元1303,用于根据类,确定属性是否为根属性类型。
在本申请的另一个数据对象序列化装置实施例中,如图14所示,还可以包括:
非根属性序列化模块1206,用于当确定属性为具有层级关系的非根属性时,将非根属性序列化为根属性。
具体地,上述非根属性序列化模块,可以将非根属性的属性值对象作为参数,调用序列化函数,对非根属性的属性值对象进行序列化。
基于同一发明构思,本申请实施例还提供的一种反序列化数据对象装置,该装置的结构如图15所示,包括:
属性值对文本获取模块1501,用于获取已被序列化为文本路径和文本值通过等号相连形成的属性值对文本;
第一空对象创建模块1502,用于将属性值对文本和反序列化后的目标类作为参数,调用反序列化函数,创建符合目标类的空对象,空对象中的属性值为空;
根属性获取模块1503,用于遍历属性值对文本,获取属性值对文本中的根属性;
根属性文本值获取模块1504,用于获取根属性对应的文本值;
根属性文本值转换模块1505,用于将根属性对应的文本值转换为目标类中对应根属性的类型,并赋值给空对象中的根属性。
由于在序列化后的属性值对文本对象中,除了根属性之外,还可能存在非根属性,由此,在本申请提供的另一个反序列化数据对象装置实施例中,如图16所示,该装置还可以包括:
路径判断模块1506,用于判断属性值对文本中是否存在与根属性具有相同路径前缀的属性;
属性确定模块1507,用于如果存在与根属性具有相同路径前缀的属性,则确定根属性下具有下级非根属性;
第二空对象创建模块1508,用于调用反序列化函数,创建符合根属性对应类的空对象;
非根属性获取模块1509,用于遍历对应下级非根属性的属性值对文本,获取下级非根属性;
非根属性文本值获取模块1510,用于获取下级非根属性对应的文本值;
非根属性文本值转换模块1511,用于将下级非根属性对应的文本值转换为下级非根属性的类型,并赋值给根属性对应类的空对象中的下级非根属性。
上述说明示出并描述了本申请的优选实施例,但如前,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

Claims (12)

1.一种数据对象序列化方法,其特征在于,包括:
获取数据对象;
将所述数据对象作为参数,调用序列化函数,获取所述数据对象中包括的根属性;
根据所述根属性在所述数据对象中的位置,生成文本路径;
获取所述根属性对应的属性值对象,将所述属性值对象转换为文本值;
将对应相同所述根属性的所述文本路径和所述文本值通过等号相连形成属性值对的文本格式,生成各个所述根属性的序列化结果。
2.根据权利要求1所述的方法,其特征在于,所述获取所述数据对象中包括的根属性,包括:
获取所述数据对象的属性;
获取所述属性的类;
根据所述类,确定所述属性是否为所述根属性类型。
3.根据权利要求2所述的方法,其特征在于,还包括:
当确定所述属性为具有层级关系的非根属性时,将所述非根属性序列化为根属性。
4.根据权利要求3所述的方法,其特征在于,所述将所述非根属性序列化为根属性,包括:
将所述非根属性的属性值对象作为参数,调用所述序列化函数,对所述非根属性的属性值对象进行序列化。
5.一种反序列化数据对象方法,其特征在于,包括:
获取已被序列化为文本路径和文本值通过等号相连形成的属性值对文本;
将所述属性值对文本和反序列化后的目标类作为参数,调用反序列化函数,创建符合所述目标类的空对象,所述空对象中的属性值为空;
遍历所述属性值对文本,获取所述属性值对文本中的根属性;
获取所述根属性对应的文本值;
将所述根属性对应的文本值转换为所述目标类中对应所述根属性的类型,并赋值给所述空对象中的所述根属性。
6.根据权利要求5所述的方法,其特征在于,还包括:
判断所述属性值对文本中是否存在与所述根属性具有相同路径前缀的属性;
如果存在与所述根属性具有相同路径前缀的属性,则确定所述根属性下具有下级非根属性;
调用所述反序列化函数,创建符合所述根属性对应类的空对象;
遍历对应所述下级非根属性的属性值对文本,获取所述下级非根属性;
获取所述下级非根属性对应的文本值,将所述下级非根属性对应的文本值转换为所述下级非根属性的类型,并赋值给所述根属性对应类的空对象中的所述下级非根属性。
7.一种数据对象序列化装置,其特征在于,包括:
数据对象获取模块,用于获取数据对象;
根属性获取模块,用于将所述数据对象作为参数,调用序列化函数,获取所述数据对象中包括的根属性;
根属性文本路径生成模块,用于根据所述根属性在所述数据对象中的位置,生成文本路径;
根属性文本值获取模块,用于获取所述根属性对应的属性值对象,将所述属性值对象转换为文本值;
根属性属性值对生成模块,用于将对应相同所述根属性的所述文本路径和所述文本值通过等号相连形成属性值对的文本格式,生成各个所述根属性的序列化结果。
8.根据权利要求7所述的装置,其特征在于,所述根属性获取模块,包括:
属性获取单元,用于获取所述数据对象的属性;
类获取单元,用于获取所述属性的类;
属性类型确定单元,用于根据所述类,确定所述属性是否为所述根属性类型。
9.根据权利要求8所述的装置,其特征在于,还包括:
非根属性序列化模块,用于当确定所述属性为具有层级关系的非根属性时,将所述非根属性序列化为根属性。
10.根据权利要求9所述的装置,其特征在于,所述非根属性序列化模块,具体将所述非根属性的属性值对象作为参数,调用所述序列化函数,对所述非根属性的属性值对象进行序列化。
11.一种反序列化数据对象装置,其特征在于,包括:
属性值对文本获取模块,用于获取已被序列化为文本路径和文本值通过等号相连形成的属性值对文本;
第一空对象创建模块,用于将所述属性值对文本和反序列化后的目标类作为参数,调用反序列化函数,创建符合所述目标类的空对象,所述空对象中的属性值为空;
根属性获取模块,用于遍历所述属性值对文本,获取所述属性值对文本中的根属性;
根属性文本值获取模块,用于获取所述根属性对应的文本值;
根属性文本值转换模块,用于将所述根属性对应的文本值转换为所述目标类中对应所述根属性的类型,并赋值给所述空对象中的所述根属性。
12.根据权利要求11所述的装置,其特征在于,还包括:
路径判断模块,用于判断所述属性值对文本中是否存在与所述根属性具有相同路径前缀的属性;
属性确定模块,用于如果存在与所述根属性具有相同路径前缀的属性,则确定所述根属性下具有下级非根属性;
第二空对象创建模块,用于调用所述反序列化函数,创建符合所述根属性对应类的空对象;
非根属性获取模块,用于遍历对应所述下级非根属性的属性值对文本,获取所述下级非根属性;
非根属性文本值获取模块,用于获取所述下级非根属性对应的文本值;
非根属性文本值转换模块,用于将所述下级非根属性对应的文本值转换为所述下级非根属性的类型,并赋值给所述根属性对应类的空对象中的所述下级非根属性。
CN201510256172.XA 2015-05-19 2015-05-19 数据对象序列化和反序列化数据对象的方法及装置 Pending CN106294385A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510256172.XA CN106294385A (zh) 2015-05-19 2015-05-19 数据对象序列化和反序列化数据对象的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510256172.XA CN106294385A (zh) 2015-05-19 2015-05-19 数据对象序列化和反序列化数据对象的方法及装置

Publications (1)

Publication Number Publication Date
CN106294385A true CN106294385A (zh) 2017-01-04

Family

ID=57633740

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510256172.XA Pending CN106294385A (zh) 2015-05-19 2015-05-19 数据对象序列化和反序列化数据对象的方法及装置

Country Status (1)

Country Link
CN (1) CN106294385A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020014807A1 (zh) * 2018-07-16 2020-01-23 拜椰特(上海)软件技术有限公司 计算机编程语言用字符实现对象的方法
CN110914799A (zh) * 2018-06-30 2020-03-24 华为技术有限公司 一种反序列化方法、装置以及计算设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101661391A (zh) * 2009-09-24 2010-03-03 金蝶软件(中国)有限公司 一种对象序列化方法、对象反序列化方法、装置及系统
CN101888368A (zh) * 2009-05-14 2010-11-17 灰熊(北京)科技有限公司 一种使用tcp协议传输短文本消息的方法
CN103425632A (zh) * 2013-08-30 2013-12-04 深圳市路畅科技股份有限公司 一种序列化的方法、装置及处理器
CN103593194A (zh) * 2013-11-21 2014-02-19 北京国双科技有限公司 对象序列化方法和装置
CN103778248A (zh) * 2014-02-18 2014-05-07 成都致云科技有限公司 高效自描述的复杂数据对象序列化方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101888368A (zh) * 2009-05-14 2010-11-17 灰熊(北京)科技有限公司 一种使用tcp协议传输短文本消息的方法
CN101661391A (zh) * 2009-09-24 2010-03-03 金蝶软件(中国)有限公司 一种对象序列化方法、对象反序列化方法、装置及系统
CN103425632A (zh) * 2013-08-30 2013-12-04 深圳市路畅科技股份有限公司 一种序列化的方法、装置及处理器
CN103593194A (zh) * 2013-11-21 2014-02-19 北京国双科技有限公司 对象序列化方法和装置
CN103778248A (zh) * 2014-02-18 2014-05-07 成都致云科技有限公司 高效自描述的复杂数据对象序列化方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110914799A (zh) * 2018-06-30 2020-03-24 华为技术有限公司 一种反序列化方法、装置以及计算设备
CN110914799B (zh) * 2018-06-30 2023-02-28 华为云计算技术有限公司 一种反序列化方法、装置以及计算设备
WO2020014807A1 (zh) * 2018-07-16 2020-01-23 拜椰特(上海)软件技术有限公司 计算机编程语言用字符实现对象的方法

Similar Documents

Publication Publication Date Title
CN107291476A (zh) Canvas代码生成方法、装置、电子设备及存储介质
CN103995781B (zh) 一种基于模型的构件测试用例生成方法
CN103605518A (zh) 对象反序列化方法和装置
WO2017093576A1 (en) Improved construction of database schema models for database systems and rest api's
CN104035754A (zh) 一种基于xml的自定义代码生成方法及生成器
KR20130111211A (ko) 입-출력 예시를 사용한 텍스트 조작 프로그램 생성
CN105426711A (zh) 一种计算机软件源代码相似度检测方法
CN106844380A (zh) 一种数据库操作方法、信息处理方法和相应装置
CN101146281A (zh) 一种面向移动终端的创建图形用户界面模型
CN106326363A (zh) 一种基于正则表达式的匹配方法及装置
CN104731911A (zh) 一种数据表与实体类的动态映射及转换方法
CN106294385A (zh) 数据对象序列化和反序列化数据对象的方法及装置
CN106294686B (zh) 一种应用于计算机技术领域思维导图中快速更新树结点位置坐标的方法
CN105912723B (zh) 一种自定义字段的存储方法
CN106502680A (zh) 一种通过可视化界面进行图元扩展的方法
CN112328231B (zh) python字典和结构体间的快速转换方法
CN113448782B (zh) 存储器的测试方法、存储介质和计算机设备
CN109376248B (zh) 基于增量学习的知识库构建及偏序结构图生成方法
WO2021012499A1 (zh) 文件比对方法、装置、计算机设备和存储介质
CN103631983A (zh) 一种战术数据报文模拟方法及系统
US20030101192A1 (en) Method and system for a general computing software system
CN108132924B (zh) 一种基于excel的芯片端口映射管理方法
CN112163031B (zh) 一种基于思维导图的图数据抽取方法
Sadeh Nahda-izing India: The Urdu-Hindi Debate and its Arabic Alternative, c. 1860s–1947
US7562295B1 (en) Representing spelling and grammatical error state in an XML document

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170104

RJ01 Rejection of invention patent application after publication