对象序列化方法和装置制造方法

文档序号:6520256阅读:144来源:国知局
对象序列化方法和装置制造方法
【专利摘要】本发明公开了一种对象序列化方法和装置。其中,对象序列化方法包括:获取目标对象;创建与目标对象对应的Json对象,Json对象为具有目标对象的属性的设置操作的类;将目标对象转化为Json对象;以及由Json对象生成目标对象的序列化字符串。通过本发明,使得序列化结果与目标对象结构之间不需要严格映射,可以灵活控制序列化结果。
【专利说明】对象序列化方法和装置
【技术领域】
[0001]本发明涉及互联网领域,具体而言,涉及一种对象序列化方法和装置。
【背景技术】
[0002]JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript (Standard ECMA_2623rd Edition_Decemberl999)脚本语言的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
[0003]序列化(Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。上述中的对象(Object)就是客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。
[0004]目前,针对不同的语言框架,对象的序列化通常使用语言框架内置的序列化类,对目标对象进行序列化。采用这种方式进行序列化,使得序列化结果必须与目标对象结构严格映射,无法满足灵活的序列化需求。
[0005]针对现有技术中序列化结果必须与目标对象结构严格映射,无法满足灵活的序列化需求的问题,目前尚未提出有效的解决方案。

【发明内容】

[0006]本发明的主要目的在于提供一种对象序列化方法和装置,以解决序列化结果必须与目标对象结构严格映射,无法满足灵活的序列化需求的问题。
[0007]为了实现上述目的,根据本发明的一个方面,提供了一种对象序列化方法。根据本发明的对象序列化方法包括:获取目标对象;创建与目标对象对应的Json对象,Json对象为具有目标对象的属性的设置操作的类;将目标对象转化为Json对象;以及由Json对象生成目标对象的序列化字符串。
[0008]进一步地,目标对象的属性包括对象属性、数组属性和值属性中至少之一,其中,创建与目标对象对应的Json对象包括以下至少之一:创建与目标对象的属性对应的Json子对象,Json子对象为用于对对象属性进行序列化操作的类;创建与目标对象的属性对应的Json数组对象,Json数组对象为对数组属性进行序列化操作的类;以及创建与目标对象的属性对应的Json值对象,Json值对象为对值属性进行序列化操作的类。
[0009]进一步地,目标对象包括子对象,在获取目标对象之后,对象序列化方法还包括:获取目标对象的子对象,其中,在将目标对象转化为Json对象之后,对象序列化方法还包括:将目标对象的子对象转化为Json子对象;将目标对象的子对象的数组属性转化为Json数组对象;将目标对象的子对象的值属性转化为Json值对象。
[0010]进一步地,在获取目标对象之后,对象序列化方法还包括:获取用户选择的目标对象的属性,其中,将目标对象转化为Json对象包括:由用户选择的目标对象的属性将目标对象转化为相应的Json对象。
[0011]进一步地,由Json对象生成目标对象的序列化字符串包括:将Json对象的Json值对象按照Json语法生成Json字符串;将Json对象的Json数组对象按照Json语法生成Json字符串;以及将目标对象的对象属性的Json对象、Json值和Json数组按照Json语法生成Json字符串。
[0012]为了实现上述目的,根据本发明的另一方面,提供了一种对象序列化装置。根据本发明的对象序列化装置包括:第一获取单元,用于获取目标对象;创建单元,用于创建与目标对象对应的Json对象,Json对象为具有目标对象的属性的设置操作的类;第一转化单元,用于将目标对象转化为Json对象;以及生成单元,用于由Json对象生成目标对象的序列化字符串。
[0013]进一步地,目标对象的属性包括对象属性、数组属性和值属性中至少之一,其中,创建单元包括以下至少之一:第一创建模块,用于创建与目标对象的属性对应的Json子对象,Json子对象为用于对对象属性进行序列化操作的类;第二创建模块,用于创建与目标对象的属性对应的Json数组对象,Json数组对象为对数组属性进行序列化操作的类;以及第三创建模块,用于创建与目标对象的属性对应的Json值对象,Json值对象为对值属性进行序列化操作的类。
[0014]进一步地,目标对象包括子对象,对象序列化装置还包括:第二获取单元,用于在获取目标对象之后,获取目标对象的子对象,其中;以及第二转化单元,用于在在将目标对象转化为Json对象之后,将目标对象的子对象转化为Json子对象,将目标对象的子对象的数组属性转化为Json数组对象,将目标对象的子对象的值属性转化为Json值对象。
[0015]进一步地,对象序列化装置还包括:第三获取单元,用于在获取目标对象之后,获取用户选择的目标对象的属性,其中,第一转化单元包括:转化模块,用于由用户选择的目标对象的属性将目标对象转化为相应的Json对象。
[0016]进一步地,生成单元包括:第一生成模块,用于将Json对象的Json值对象按照Json语法生成Json字符串;第二生成模块,用于将Json对象的Json数组对象按照Json语法生成Json字符串;以及第三生成模块,用于将目标对象的对象属性的Json对象、Json值和Json数组按照Json语法生成Json字符串。
[0017]通过本发明,采用对象序列化方法,其特征在于,包括:获取目标对象;创建与目标对象对应的Json对象,Json对象为具有目标对象的属性的设置操作的类;将目标对象转化为Json对象;以及由Json对象生成目标对象的序列化字符串,通过创建与目标对象对应的Json对象,并将目标对象转化为该Json对象,由Json对象生成目标对象的序列化字符串,从而实现对目标对象的序列化,由于Json对象生成过程由开发者完成,开发者决定目标对象的哪些成员参与Json生成并构建对应的Json对象,使得序列化结果与目标对象结构之间不需要严格映射,因此可以灵活控制序列化结果。
【专利附图】

【附图说明】
[0018]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:[0019]图1是根据本发明第一实施例的对象序列化装置的结构示意图;
[0020]图2是根据本发明第二实施例的对象序列化装置的结构示意图
[0021]图3是根据本发明第一实施例的对象序列化方法的流程图;以及
[0022]图4是根据本发明第二实施例的对象序列化方法的流程图。
【具体实施方式】
[0023]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0024]为了使本【技术领域】的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0025]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0026]本发明实施例提供了一种对象序列化装置,该装置可以通过计算机设备实现其功倉泛。
[0027]图1是根据本发明第一实施例的对象序列化装置的结构示意图。如图1所示,该对象序列化装置包括:第一获取单元10、创建单元20、第一转化单元30和生成单元40。
[0028]第一获取单元10用于获取目标对象。
[0029]目标对象为客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。例如,当对象为书籍,其具有的属性包括书籍编号、作者、出版社和备注等,将该书籍进行序列化后,生成与该书籍对应的Json字符串,该Json字符串具有与书籍的属性相对应的属性值,从而通过计算机语言表示客观世界中存在的人、事、物体等实体。目标对象可以是任意的客观世界中存在的人、事、物体等实体,这里的目标对象可以是用户输入的需要进行序列化的对象。
[0030]创建单元20用于创建与目标对象对应的Json对象,Json对象为具有目标对象的属性的设置操作的类。
[0031]Json对象为具有目标对象的属性的设置操作的类,这里的类(Class)是面向对象程序设计语言中的一个概念。实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。一个类定义了一组对象。类具有行为(be-havoir),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。
[0032]类实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上它本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。类通过接口与外界发生关系。
[0033]可以把类看作“理论上”的对象,也就是说,它为对象提供蓝图,但在内存中并不存在。从这个蓝图可以创建任何数量的对象。从类创建的所有对象都有相同的成员:属性、方法和事件。但是,每个对象都像一个独立的实体一样动作。例如,一个对象的属性可以设置成与同类型的其他对象不同的值(value)。
[0034]创建的Json对象可以对目标对象的属性进行设置操作,以及生成目标对象对应的Json字符串的方法,也即是在Json对象中封装了序列化生成字符串的这一过程。Json对象的类可以是Json对象,也可以是Json值或Json数组,其中,Json值也为一个类,继承Json对象,Json值的类可以用于将一个基本类型的属性值包装成一个Json值对象,提供一个带参数的构造函数,以及生成Json字符串的方法。Json数组也为一个类,用于提供添加方法添加Json值或者Json对象也可以是Json数组,以及生成Json字符串的方法。例如,当目标对象为“王刚”时,目标对象“王刚”符合人的定义,则其属性包括“姓名”、“年龄”、“性别”和“职务”等,由于人的职务可以有很多,因此“姓名”、“年龄”、“性别”可以是目标对象“王刚”的值属性,“职务”可以是目标对象“王刚”的数组属性,创建的Json对象可以对目标对象“王刚”的属性进行相应的设置操作,从而进行相应的序列化。
[0035]当然,目标对象的属性为空时,通过本发明实施例的Json对象也可以将其转化为相应的序列化字符串。
[0036]第一转化单元30用于将目标对象转化为Json对象。
[0037]目标对象为需要进行序列化的对象,由于Json对象中具有生成Json字符串的方法,因此,将被序列化的目标对象转化为Json对象,即,将目标对象映射为Json对象,可以使用Json对象完成目标对象的序列化。将目标对象转化为Json对象可以是将目标对象的属性转化为相应的Json对象,例如,当目标对象的属性包括值属性和数组属性,则可以将目标对象的值属性转化为Json值对象,将的数组属性转化为Json数组对象。目标对象的属性还可以是对像,由于目标对象的对象属性也为对象,因此将目标对象的对象属性转化为Json对象。
[0038]生成单元40用于由Json对象生成目标对象的序列化字符串。
[0039]在将目标对象转化为Json对象之后,通过对Json对象进行序列化,生成序列化后的Json字符串,该Json字符串即为目标对象的序列化字符串。这样,通过对Json对象序列化实现对目标对象的序列化。
[0040]根据本发明实施例,通过创建与目标对象对应的Json对象,并将目标对象转化为该Json对象,由Json对象生成目标对象的序列化字符串,从而实现对目标对象的序列化,由于Json对象生成过程由开发者完成,开发者决定目标对象的哪些成员参与Json生成并构建对应的Json对象,使得序列化结果与目标对象结构之间不需要严格映射,因此可以灵活控制序列化结果。
[0041]优选地,目标对象的属性包括对象属性、数组属性和值属性中至少之一,其中,创建单元20包括第一创建模块、第二创建模块和第三创建模块中至少之一。[0042]第一创建模块用于创建与目标对象的属性对应的Json子对象,Json子对象为用于对对象属性进行序列化操作的类。
[0043]由于Json对象和Json子对象都是对对象的进行属性设置的类,因此,Json子对象也可以称为Json对象,在实际应用中,直接将目标对象的对象属性转化为Json对象进行序列化。
[0044]第二创建模块用于创建与目标对象的属性对应的Json数组对象,Json数组对象为对数组属性进行序列化操作的类。
[0045]第三创建模块用于创建与目标对象的属性对应的Json值对象,Json值对象为对值属性进行序列化操作的类。
[0046]对象的属性可以是对象属性、数组属性和值属性,也即是目标对象的属性可以是对象,可以是数组,还可以是值,还可以是其中任意几个的组合,或者属性为空。例如,当目标对像为“王刚”,符合人的定义,其属性包括“姓名”、“年龄”、“性别”等属性,这些属性为值属性,则可以创建与目标对象对应的Json值对象以对目标对象的值属性进行转化;如果目标对像“王刚”还可以包括“职务”属性,则可以创建与目标对象对应的Json数组对象,对目标对象的数组属性进行转化;目标对像“王刚”还可以包括“配偶”属性,“配偶”为对象属性,可以称为目标对象的子对象,则创建与目标对象对应的Json子对象,对目标对象的对象属性进行转化。
[0047]根据本发明实施例,可以根据目标对象的不同属性,创建不同的Json对象(如Json子对象、Json数组对象和Json值对象等),对目标对象进行相应的序列化。当然,在目标对象的属性发生变化时,也可以根据变化后的属性创建相应的Json对象,从而使得转化后的Json对象可以是Json对象、Json数组对象和Json值对象中的任意几个的组合,因此可以灵活地对目标对象进行序列化,而不限定于目标对象的任何属性类型。
[0048]优选地,目标对象包括子对象,对象序列化装置还包括第二获取单元和第二转化单元。
[0049]第二获取单元用于在获取目标对象之后,获取目标对象的子对象。
[0050]目标对象的子对象可以是目标对象的对象属性对应的对象。例如,当目标对象为“王刚”时,可以包括“配偶”属性,其配偶为“李梅”,则“李梅”为目标对象“王刚”的子对象。由于子对象“李梅”具有多种属性,如“姓名”、“年龄”和“职务”等,因此,获取目标对象的子对象以便于对目标对象的子对象进行相应的递归序列化。
[0051]第二转化单元用于在在将目标对象转化为Json对象之后,将目标对象的子对象转化为Json子对象,将目标对象的子对象的数组属性转化为Json数组对象,将目标对象的子对象的值属性转化为Json值对象。
[0052]由于Json对象和Json子对象都是对对象的进行属性设置的类,因此,Json子对象也可以称为Json对象,在实际应用中,直接将目标对象的子对象转化为Json对象进行序列化。将目标对象的子对象转化为Json子对象可以是将目标对象的子对象转化为Json对象。相应地,目标对象的子对象可以包括数组属性,因此将数组属性转化为Json数组对象。相应地,目标对象的子对象可以包括值属性,因此将值属性转化为Json值对象。
[0053]需要说明的是,目标对象的子对象的属性还可以是包括对象属性、值属性和数组属性中的几种组合属性,则根据子对象的属性进行相应的转化。当然,目标对象的子对象还可以包括子对象,其子对象的处理同目标对象的子对象的处理相同。由此可以看出,可以通过本发明实施例的对象序列化方法对任意对象进行序列化并控制Json序列化生成的结
果O
[0054]图2是根据本发明第二实施例的对象序列化装置的结构示意图。该实施例的对象序列化装置可以作为上述实施例的对象序列化装置的一种优选实施方式。如图2所示,该对象序列化装置包括:第一获取单元10、创建单元20、第一转化单元30、生成单元40和第三获取单元50,其中,第一转化单元30包括转化模块301。第一获取单元10、创建单元20和生成单元40与图1所示的第一获取单元10、创建单元20和生成单元40功能相同,这里不做赘述。
[0055]第三获取单元50用于在获取目标对象之后,获取用户选择的目标对象的属性。
[0056]由于目标对象包括多个属性,用户可以选择目标对象的任意的一些属性进行序列化,在获取目标对象之后,获取用户选择的目标对象的属性,以便于对目标对象进行序列化。
[0057]转化模块301用于由用户选择的目标对象的属性将目标对象转化为相应的Json对象。
[0058]在创建与目标对象对应Json对象之后,由目标对象的属性将目标对象转化为相应的Json对象。例如,目标对象的属性为值属性,则将值属性转化为Json值对象;目标对象的属性为数组属性,则将数组属性转化为Json数组对象;目标对象的属性为对象属性,则将对象属性转化为Json对象。
[0059]优选地,本发明实施例的生成单元40包括:第一生成模块、第二生成模块和第三生成模块。
[0060]第一生成模块用于将Json对象的Json值对象按照Json语法生成Json字符串。[0061 ] 将Json值对象按照Json语法生成Json字符串,可以是以键值对的方式生成Json字符串,例如,当目标对象为“王刚”时,其包含“姓名”属性,则通过Json值对象按照键值对的形式生成Json字符串为“‘姓名’:‘王刚’”,其中,‘姓名’为键,‘王刚’为值,中间以冒号隔开,从而生成了键值对的形式的Json字符串。
[0062]第二生成模块用于将Json对象的Json数组对象按照Json语法生成Json字符串。
[0063]将Json对象的Json数组对象按照Json语法生成Json字符串,并以键值的方式呈现在序列化后的字符串上。
[0064]例如,当对象为“李梅”时,其对应的属性为“职务”,该属性为数组,在转化的过程中将其转化后的字符串为“职务”:[“顾问”,”母亲”]。
[0065]第三生成模块用于将目标对象的对象属性的Json对象、Json值和Json数组按照Json语法生成Json字符串。
[0066]由于目标对象包括对象属性,其对象属性对应的对象还可以包括对象属性、值属性和数组属性,则对应的将对象属性的Json对象、Json值和Json数组按照Json语法生成Json字符串,并最终呈现在目标对象序列化后的字符串上。
[0067]例如,目标对象为“王刚”,其具有属性为“配偶”,该属性为对象属性,则转化后的字符串为“配偶”:{ “姓名李梅”,“年龄”:28,“性别女”,“职务”:[“顾问”,“母亲” ]}。
[0068]Json对象、Json值对象、Json数组对象在序列化期间,会生成不同格式的字符串。以属性名称做为键,冒号为分割,多个属性值以逗号区分。
[0069]目标对象(王刚)拥有5个属性,其中包含3个JSON值(姓名,年龄,性别),一个json数组(车辆),和一个Json对象(配偶),其中,目标对象“王刚”的配偶这个Json对象,结果为{ “姓名”:“李梅”,“年龄”:28, “性别”女”,“职务”:[“顾问”,“母亲” ]}。
[0070]得到最后结果:
[0071]{ “姓名王刚”,“年龄”:28,“性别男”,“车辆”:[“桑塔纳2000”,“奥迪A6”,“幻影劳斯莱斯”],“配偶”:{ “姓名”李梅”,“年龄”:28,“性别”女”,“职务”:[“顾问”,
“母亲”]}}
[0072]本发明实施例还提供了 一种对象序列化方法。该方法可以运行在对象序列化装置上。需要说明的是,本发明实施例的对象序列化方法可以通过本发明实施例所提供的对象序列化装置来执行,本发明实施例的对象序列化装置也可以用于执行本发明实施例所提供的对象序列化方法。
[0073]图3是根据本发明第一实施例的对象序列化方法的流程图。如图3所示,该对象序列化方法包括步骤如下:
[0074]步骤S101,获取目标对象。
[0075]目标对象为客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。例如,当对象为书籍,其具有的属性包括书籍编号、作者、出版社和备注等,将该书籍进行序列化后,生成与该书籍对应的Json字符串,该Json字符串具有与书籍的属性相对应的属性值,从而通过计算机语言表示客观世界中存在的人、事、物体等实体。目标对象可以是任意的客观世界中存在的人、事、物体等实体,这里的目标对象可以是用户输入的需要进行序列化的对象。
[0076]步骤S102,创建与目标对象对应的Json对象,Json对象为具有目标对象的属性的设置操作的类。
[0077]Json对象为具有目标对象的属性的设置操作的类,这里的类(Class)是面向对象程序设计语言中的一个概念。实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。一个类定义了一组对象。类具有行为(be-havoir),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。
[0078]类实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上它本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。类通过接口与外界发生关系。
[0079]可以把类看作“理论上”的对象,也就是说,它为对象提供蓝图,但在内存中并不存在。从这个蓝图可以创建任何数量的对象。从类创建的所有对象都有相同的成员:属性、方法和事件。但是,每个对象都像一个独立的实体一样动作。例如,一个对象的属性可以设置成与同类型的其他对象不同的值(value)。
[0080]创建的Json对象可以对目标对象的属性进行设置操作,以及生成目标对象对应的Json字符串的方法,也即是在Json对象中封装了序列化生成字符串的这一过程。Json对象的类可以是Json对象,也可以是Json值或Json数组,其中,Json值也为一个类,继承Json对象,Json值的类可以用于将一个基本类型的属性值包装成一个Json值对象,提供一个带参数的构造函数,以及生成Json字符串的方法。Json数组也为一个类,用于提供添加方法添加Json值或者Json对象也可以是Json数组,以及生成Json字符串的方法。例如,当目标对象为“王刚”时,目标对象“王刚”符合人的定义,则其属性包括“姓名”、“年龄”、“性别”和“职务”等,由于人的职务可以有很多,因此“姓名”、“年龄”、“性别”可以是目标对象“王刚”的值属性,“职务”可以是目标对象“王刚”的数组属性,创建的Json对象可以对目标对象“王刚”的属性进行相应的设置操作,从而进行相应的序列化。
[0081]当然,目标对象的属性为空时,通过本发明实施例的Json对象也可以将其转化为相应的序列化字符串。
[0082]步骤S103,将目标对象转化为Json对象。
[0083]目标对象为需要进行序列化的对象,由于Json对象中具有生成Json字符串的方法,因此,将被序列化的目标对象转化为Json对象,即,将目标对象映射为Json对象,可以使用Json对象完成目标对象的序列化。将目标对象转化为Json对象可以是将目标对象的属性转化为相应的Json对象,例如,当目标对象的属性包括值属性和数组属性,则可以将目标对象的值属性转化为Json值对象,将的数组属性转化为Json数组对象。目标对象的属性还可以是对像,由于目标对象的对象属性也为对象,因此将目标对象的对象属性转化为Json对象。
[0084]步骤S104,由Json对象生成目标对象的序列化字符串。
[0085]在将目标对象转化为Json对象之后,通过对Json对象进行序列化,生成序列化后的Json字符串,该Json字符串即为目标对象的序列化字符串。这样,通过对Json对象序列化实现对目标对象的序列化。
[0086]根据本发明实施例,通过创建与目标对象对应的Json对象,并将目标对象转化为该Json对象,由Json对象生成目标对象的序列化字符串,从而实现对目标对象的序列化,由于Json对象生成过程由开发者完成,开发者决定目标对象的哪些成员参与Json生成并构建对应的Json对象,使得序列化结果与目标对象结构之间不需要严格映射,因此可以灵活控制序列化结果。
[0087]优选地,目标对象的属性包括对象属性、数组属性和值属性中至少之一,其中,步骤S102包括以下至少之一:
[0088]步骤SI I,创建与目标对象的属性对应的Json子对象,Json子对象为用于对对象属性进行序列化操作的类。由于Json对象和Json子对象都是对对象的进行属性设置的类,因此,Json子对象也可以称为Json对象,在实际应用中,直接将目标对象的对象属性转化为Json对象进行序列化。
[0089]步骤S12,创建与目标对象的属性对应的Json数组对象,Json数组对象为对数组属性进行序列化操作的类。
[0090]步骤S13,创建与目标对象的属性对应的Json值对象,Json值对象为对值属性进行序列化操作的类。
[0091]对象的属性可以是对象属性、数组属性和值属性,也即是目标对象的属性可以是对象,可以是数组,还可以是值,还可以是其中任意几个的组合,或者属性为空。例如,当目标对像为“王刚”,符合人的定义,其属性包括“姓名”、“年龄”、“性别”等属性,这些属性为值属性,则可以创建与目标对象对应的Json值对象以对目标对象的值属性进行转化;如果目标对像“王刚”还可以包括“职务”属性,则可以创建与目标对象对应的Json数组对象,对目标对象的数组属性进行转化;目标对像“王刚”还可以包括“配偶”属性,“配偶”为对象属性,可以称为目标对象的子对象,则创建与目标对象对应的Json子对象,对目标对象的对象属性进行转化。
[0092]根据本发明实施例,可以根据目标对象的不同属性,创建不同的Json对象(如Json子对象、Json数组对象和Json值对象等),对目标对象进行相应的序列化。当然,在目标对象的属性发生变化时,也可以根据变化后的属性创建相应的Json对象,从而使得转化后的Json对象可以是Json对象、Json数组对象和Json值对象中的任意几个的组合,因此可以灵活地对目标对象进行序列化,而不限定于目标对象的任何属性类型。
[0093]优选地,目标对象包括子对象,在步骤SlOl之后,对象序列化方法还包括:步骤S1011,获取目标对象的子对象。
[0094]目标对象的子对象可以是目标对象的对象属性对应的对象。例如,当目标对象为“王刚”时,可以包括“配偶”属性,其配偶为“李梅”,则“李梅”为目标对象“王刚”的子对象。由于子对象“李梅”具有多种属性,如“姓名”、“年龄”和“职务”等,因此,获取目标对象的子对象以便于对目标对象的子对象进行相应的递归序列化。
[0095]在步骤S103之后,对象序列化方法还包括:
[0096]步骤S1031,将目标对象的子对象转化为Json子对象。
[0097]由于Json对象和Json子对象都是对对象的进行属性设置的类,因此,Json子对象也可以称为Json对象,在实际应用中,直接将目标对象的子对象转化为Json对象进行序列化。将目标对象的子对象转化为Json子对象可以是将目标对象的子对象转化为Json对象。
[0098]步骤S1032,将目标对象的子对象的数组属性转化为Json数组对象。
[0099]相应地,目标对象的子对象可以包括数组属性,因此将数组属性转化为Json数组对象。
[0100]步骤S1033,将目标对象的子对象的值属性转化为Json值对象。
[0101]相应地,目标对象的子对象可以包括值属性,因此将值属性转化为Json值对象。
[0102]需要说明的是,目标对象的子对象的属性还可以是包括对象属性、值属性和数组属性中的几种组合属性,则根据子对象的属性进行相应的转化。当然,目标对象的子对象还可以包括子对象,其子对象的处理同目标对象的子对象的处理相同。由此可以看出,可以通过本发明实施例的对象序列化方法对任意对象进行序列化并控制Json序列化生成的结果O
[0103]图4是根据本发明第二实施例的对象序列化方法的流程图。该实施例的对象序列化方法可以是上述实施例的对象序列化方法的一种优选实施方式。如图4所示,该对象序列化方法包括步骤如下:
[0104]步骤S201,获取目标对象。
[0105]目标对象为客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。例如,当对象为书籍,其具有的属性包括书籍编号、作者、出版社和备注等,将该书籍进行序列化后,生成与该书籍对应的Json字符串,该Json字符串具有与书籍的属性相对应的属性值,从而通过计算机语言表示客观世界中存在的人、事、物体等实体。目标对象可以是任意的客观世界中存在的人、事、物体等实体,这里的目标对象可以是用户输入的需要进行序列化的对象。
[0106]步骤S202,获取用户选择的目标对象的属性。
[0107]由于目标对象包括多个属性,用户可以选择目标对象的任意的一些属性进行序列化,在获取目标对象之后,获取用户选择的目标对象的属性,以便于对目标对象进行序列化。
[0108]步骤S203,创建与目标对象对应Json对象。
[0109]在获取目标对象的属性之后,可以根据获取到的获取目标对象的属性创建目标对象对应Json值,Json值也为一个类,继承Json对象,Json值的类可以用于将一个基本类型的属性值包装成一个Json值对象,提供一个带参数的构造函数,以及生成Json字符串的方法。其中,带参数的构造函数会根据不同类型的参数输入,决定生成Json字符串的格式。例如,如果用户选择的目标对象的属性只包含值属性,则可以创建Json值对象,以便于将目标对象的值属性转化为相应的Json值对象。
[0110]步骤S204,由用户选择的目标对象的属性将目标对象转化为相应的Json对象。
[0111]在创建与目标对象对应Json对象之后,由目标对象的属性将目标对象转化为相应的Json对象。例如,目标对象的属性为值属性,则将值属性转化为Json值对象;目标对象的属性为数组属性,则将数组属性转化为Json数组对象;目标对象的属性为对象属性,则将对象属性转化为Json对象。
[0112]步骤S205,由Json对象生成目标对象的序列化字符串。
[0113]在将目标对象转化为Json对象之后,通过对Json对象进行序列化,生成序列化后的Json字符串,该Json字符串即为目标对象的序列化字符串。这样,通过对Json对象序列化实现对目标对象的序列化。
[0114]根据本发明实施例,用户可以根据需要选择的目标对象的属性添加相应的Json对象,进行序列化处理,或者根据需要选择目标对象的部分属性不进行序列化,从而避免了按照固定的结构进行序列化的问题,增强了对对像进行序列化的灵活性。
[0115]优选地,步骤S104或者步骤S205可以包括以下步骤:
[0116]步骤S301,将Json对象的Json值对象按照Json语法生成Json字符串。
[0117]将Json值对象按照Json语法生成Json字符串,可以是以键值对的方式生成Json字符串,例如,当目标对象为“王刚”时,其包含“姓名”属性,则通过Json值对象按照键值对的形式生成Json字符串为“‘姓名’:‘王刚’”,其中,‘姓名’为键,‘王刚’为值,中间以冒号隔开,从而生成了键值对的形式的Json字符串。
[0118]步骤S302,将Json对象的Json数组对象按照Json语法生成Json字符串。
[0119]将Json对象的Json数组对象按照Json语法生成Json字符串,并以键值的方式呈现在序列化后的字符串上。
[0120]例如,当对象为“李梅”时,其对应的属性为“职务”,该属性为数组,在转化的过程中将其转化后的字符串为“职务”:[“顾问”,”母亲”]。[0121]步骤S303,将目标对象的对象属性的Json对象、Json值和Json数组按照Json语法生成Json字符串。
[0122]由于目标对象包括对象属性,其对象属性对应的对象还可以包括对象属性、值属性和数组属性,则对应的将对象属性的Json对象、Json值和Json数组按照Json语法生成Json字符串,并最终呈现在目标对象序列化后的字符串上。
[0123]例如,目标对象为“王刚”,其具有属性为“配偶”,该属性为对象属性,则转化后的字符串为“配偶”:{ “姓名李梅”,“年龄”:28,“性别女”,“职务”:[“顾问”,“母亲” ]}。
[0124]Json对象、Json值对象、Json数组对象在序列化期间,会生成不同格式的字符串。以属性名称做为键,冒号为分割,多个属性值以逗号区分。
[0125]目标对象(王刚)拥有5个属性,其中包含3个JSON值(姓名,年龄,性别),一个json数组(车辆),和一个Json对象(配偶),其中,目标对象“王刚”的配偶这个Json对象,结果为{ “姓名”:“李梅”,“年龄”:28, “性别”女”,“职务”:[“顾问”,“母亲” ]}。
[0126]得到最后结果:
[0127]{ “姓名王刚”,“年龄”:28,“性别男”,“车辆”:[“桑塔纳2000”,“奥迪A6”,“幻影劳斯莱斯”],“配偶”: { “姓名”李梅”,“年龄”:28,“性别”女”,“职务”:[“顾问”,
“母亲”]}}
[0128]从而完成序列化的对象转化和生成目标字符串的过程。
[0129]下面以C#语言为例,对本方案的一个应用场景进行描述。
[0130]首先对Json的类做一个编程级别的命名,Json对象命名为JsonObject, Json数组命名为JsonArray, Json值命名为JsonValue。实现步骤如下:
[0131]步骤I,创建一个测试类(书籍Book类),Book类包含了多个属性,如整数的ID为标识,书籍编号ISBN,作者Author、出版社Publisher、备注Remarks和一个时
[0132]
【权利要求】
1.一种对象序列化方法,其特征在于,包括: 获取目标对象; 创建与所述目标对象对应的Json对象,所述Json对象为具有所述目标对象的属性的设置操作的类; 将所述目标对象转化为所述Json对象;以及 由所述Json对象生成所述目标对象的序列化字符串。
2.根据权利要求1所述的对象序列化方法,其特征在于,所述目标对象的属性包括对象属性、数组属性和值属性中至少之一,其中,创建与所述目标对象对应的Json对象包括以下至少之一: 创建与所述目标对象的属性对应的Json子对象,所述Json子对象为用于对所述对象属性进行序列化操作的类; 创建与所述目标对象的属性对应的Json数组对象,所述Json数组对象为对所述数组属性进行序列化操作的类;以及 创建与所述目标对象的属性对应的Json值对象,所述Json值对象为对所述值属性进行序列化操作的类。
3.根据权利要求2所述的对象序列化方法,其特征在于,所述目标对象包括子对象,在获取目标对象之后,所述对象序列化方法还包括:获取所述目标对象的子对象,其中, 在将所述目标对象转化为所述Json对象之后,所述对象序列化方法还包括:将所述目标对象的子对象转化为所述Json子对象;将所述目标对象的子对象的数组属性转化为所述Json数组对象;将所述目标对象的子对象的值属性转化为所述Json值对象。
4.根据权利要求1所述的对象序列化方法,其特征在于,在获取目标对象之后,所述对象序列化方法还包括:获取用户选择的所述目标对象的属性,其中, 将所述目标对象转化为所述Json对象包括:由用户选择的所述目标对象的属性将所述目标对象转化为相应的Json对象。
5.根据权利要求1所述的对象序列化方法,其特征在于,由所述Json对象生成所述目标对象的序列化字符串包括: 将所述Json对象的Json值对象按照Json语法生成Json字符串; 将所述Json对象的Json数组对象按照所述Json语法生成Json字符串;以及将所述目标对象的对象属性的Json对象、Json值和Json数组按照Json语法生成Json字符串。
6.一种对象序列化装置,其特征在于,包括: 第一获取单元,用于获取目标对象; 创建单元,用于创建与所述目标对象对应的Json对象,所述Json对象为具有所述目标对象的属性的设置操作的类; 第一转化单元,用于将所述目标对象转化为所述Json对象;以及 生成单元,用于由所述Json对象生成所述目标对象的序列化字符串。
7.根据权利要求6所述的对象序列化装置,其特征在于,所述目标对象的属性包括对象属性、数组属性和值属性中至少之一,其中,所述创建单元包括以下至少之一: 第一创建模块,用于创建与所述目标对象的属性对应的Json子对象,所述Json子对象为用于对所述对象属性进行序列化操作的类; 第二创建模块,用于创建与所述目标对象的属性对应的Json数组对象,所述Json数组对象为对所述数组属性进行序列化操作的类;以及 第三创建模块,用于创建与所述目标对象的属性对应的Json值对象,所述Json值对象为对所述值属性进行序列化操作的类。
8.根据权利要求7所述的对象序列化装置,其特征在于,所述目标对象包括子对象,所述对象序列化装置还包括: 第二获取单元,用于在获取目标对象之后,获取所述目标对象的子对象,其中;以及第二转化单元,用于在在将所述目标对象转化为所述Json对象之后,将所述目标对象的子对象转化为所述Json子对象,将所述目标对象的子对象的数组属性转化为所述Json数组对象,将所述目标对象的子对象的值属性转化为所述Json值对象。
9.根据权利要求6所述的对象序列化装置,其特征在于,所述对象序列化装置还包括:第三获取单元, 用于在获取目标对象之后,获取用户选择的所述目标对象的属性,其中, 所述第一转化单元包括:转化模块,用于由用户选择的所述目标对象的属性将所述目标对象转化为相应的Json对象。
10.根据权利要求6所述的对象序列化装置,其特征在于,所述生成单元包括: 第一生成模块,用于将所述Json对象的Json值对象按照Json语法生成Json字符串; 第二生成模块,用于将所述Json对象的Json数组对象按照所述Json语法生成Json字符串;以及 第三生成模块,用于将所述目标对象的对象属性的Json对象、Json值和Json数组按照Json语法生成Json字符串。
【文档编号】G06F9/44GK103593194SQ201310596703
【公开日】2014年2月19日 申请日期:2013年11月21日 优先权日:2013年11月21日
【发明者】池雷 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1