CN108874387B - 一种数据序列化方法及其相关设备 - Google Patents
一种数据序列化方法及其相关设备 Download PDFInfo
- Publication number
- CN108874387B CN108874387B CN201810685140.5A CN201810685140A CN108874387B CN 108874387 B CN108874387 B CN 108874387B CN 201810685140 A CN201810685140 A CN 201810685140A CN 108874387 B CN108874387 B CN 108874387B
- Authority
- CN
- China
- Prior art keywords
- data
- json
- formatting
- attribute
- model entity
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据序列化方法及其相关设备,用于根据预置的数据格式化方法与数据类型的对应关系将JSON数据序列化为数据模型实体。本申请实施例包括:获取JSON数据;确定所述JSON数据的至少一个属性信息;确定与所述至少一个属性信息对应的至少一种数据类型;根据预置的数据格式化方法与数据类型的一一对应关系,确定与所述至少一种数据类型对应的至少一种数据格式化方法;根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种数据序列化方法及其相关设备。
背景技术
应用开发过程第一步需要做的是设计并定义好数据库,数据库设计并定义好后,后台需要对每个数据实体定义数据模型(model),并建立数据模型与数据访问层的接口,进而把数据模型的数据映射到数据库或文件中。
Flask Web应用开发过程中,前端与后台采用JSON数据进行交互,当前端发送JSON数据到达后台,后台把前端发送的请求数据反序列化为数据模型,再通过数据模型与数据访问层的接口实现与数据库的数据交互。后台把前端数据反序列化为数据模型的过程具体为:后台先将前端请求的JSON数据转换为字典数据,并针对不同属性信息的数据分别写一个从字典中获取属性值和数据格式化方式的代码,随后将格式化后的属性值写入数据模型实体,从而实现将包含不同属性信息的JSON数据序列化为数据模型实体。
采用上述编码方式,需要对包含不同属性信息的数据模型都编写一个从字典中获取属性值并赋值给数据模型的代码,且属性信息改变时,代码也需要做相应修改,导致管理代码的工作量巨大。
发明内容
本申请实施例提供了一种数据序列化方法及其相关设备,用于根据预置的数据格式化方法与数据类型的对应关系将JSON数据序列化为数据模型实体。
本申请第一方面提供了一种数据的序列化方法,其特征在于,包括:
获取JSON数据;
确定所述JSON数据的至少一个属性信息;
确定与所述至少一个属性信息对应的至少一种数据类型;
根据预置的数据格式化方法与数据类型的一一对应关系,确定与所述至少一种数据类型对应的至少一种数据格式化方法;
根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体。
基于第一方面,在第一方面的第一种可实现方式中,所述JSON数据的每个属性信息对应一个属性名,所述根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体包括:
确定JSON数据中每个属性名对应的属性值;
将所述属性值按照对应的所述数据格式化方法进行格式化,直至完成所述JSON数据中全部属性值的格式化;
将格式化后的属性值写入所述数据模型实体。
基于第一方面的第一种可实现方式,在第一方面的第二种可实现方式中,所述将所述属性值按照对应的所述数据格式化方法进行格式化,直至完成所述JSON数据中全部属性值的格式化包括:
1>确定所述至少一种数据格式化方法中与属性值中目标属性值对应的目标数据格式化方法;
2>将所述目标属性值按照目标数据格式化方法进行格式化;
重复执行步骤1>和2>,直至完成所述JSON数据中全部属性值的格式化。
基于第一方面的第一种或第二种可实现方式,在第一方面的第三种可实现方式中,所述数据模型model实体中包括与JSON数据中相同的属性名,所述将格式化后的属性值写入所述数据模型实体包括:
根据所述相同的属性名,将格式化后的所述属性值写入所述数据模型实体的对应位置。
基于第一方面及其第一方面的第一种至第二种可实现方式,在第一方面的第四种可实现方式中,所述确定所述JSON数据的至少一个属性信息包括:
处理所述JSON数据得到待序列化的所述数据模型model实体;
确定所述待序列化的所述数据模型model实体中包含的所述至少一个属性信息。
基于第一方面及其第一方面的第一种至第二种可实现方式,在第一方面的第五种实现方式中,所述确定所述JSON数据的至少一个属性信息包括:
将所述JSON数据转换为字典数据;
确定由所述JSON数据转换得到的所述字典数据的至少一个属性信息。
本申请第二方面提供了一种服务器,其特征的在于,包括:
获取单元,用于获取JSON数据;
确定单元,用于确定所述JSON数据的至少一个属性信息;
所述确定单元,还用于确定与所述至少一个属性信息对应的至少一种数据类型;
所述确定单元,还用于根据预置的数据格式化方法与数据类型的一一对应关系,确定与所述至少一种数据类型对应的至少一种数据格式化方法;
序列化单元,用于根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体。
基于第二方面,在第二方面的第一种可实现方式中,所述JSON数据的每个属性信息对应一个属性名,所述序列化单元,具体用于:
确定JSON数据中每个属性名对应的属性值;
将所述属性值按照对应的所述数据格式化方法进行格式化,直至完成所述JSON数据中全部属性值的格式化;
将格式化后的属性值写入所述数据模型实体。
基于第二方面的第一种可实现方式,在第二方面的第二种可实现方式中,所述序列化单元,具体用于1>确定所述至少一种数据格式化方法中与属性值中目标属性值对应的目标数据格式化方法;
2>将所述目标属性值按照目标数据格式化方法进行格式化;
重复执行步骤1>和2>,直至完成所述JSON数据中全部属性值的格式化。
基于第二方面的第一种或第二种可实现方式,在第二方面的第三种可实现方式中,所述数据模型model实体中包括与JSON数据中相同的属性名,所述序列化单元,具体用于根据所述相同的属性名,将格式化后的所述属性值写入所述数据模型实体的对应位置。
基于第二方面及其第二方面的第一种至第二种可实现方式,在第二方面的第四种可实现方式中,可选的,所述确定单元,具体用于处理所述JSON数据得到待序列化的所述数据模型model实体;
确定所述待序列化的所述数据模型model实体中包含的所述至少一个属性信息。
基于第二方面及其第二方面的第一种至第二种可实现方式,在第二方面的第五种可实现方式中,所述确定单元,具体用于将所述JSON数据转换为字典数据;
确定由所述JSON数据转换得到的所述字典数据的至少一个属性信息。
本申请的第三方面提供了一种服务器,其特征的在于,包括:存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,包括如下步骤:
获取JSON数据;
确定所述JSON数据的至少一个属性信息;
确定与所述至少一个属性信息对应的至少一种数据类型;
根据预置的数据格式化方法与数据类型的一一对应关系,确定与所述至少一种数据类型对应的至少一种数据格式化方法;
根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
基于第三方面,在第三方面的第一种可实现方式中,所述处理器,具体用于确定JSON数据中每个属性名对应的属性值;
将所述属性值按照对应的所述数据格式化方法进行格式化,直至完成所述JSON数据中全部属性值的格式化;
将格式化后的属性值写入所述数据模型实体。
基于第三方面的第一种可实现方式,在第三方面的第二种可实现方式中,所述将所述属性值按照对应的所述数据格式化方法进行格式化,所述处理器,具体用于1>确定所述至少一种数据格式化方法中与属性值中目标属性值对应的目标数据格式化方法;
2>将所述目标属性值按照目标数据格式化方法进行格式化;
重复执行步骤1>和2>,直至完成所述JSON数据中全部属性值的格式化。
基于第三方面的第一种或第二种可实现方式,在第三方面的第三种可实现方式中,所述数据模型model实体中包括与JSON数据中相同的属性名,所述处理器,具体用于根据所述相同的属性名,将格式化后的所述属性值写入所述数据模型实体的对应位置。
基于第三方面及其第三方面的第一种至第二种可实现方式,在第三方面的第四种可实现方式中,处理所述JSON数据得到待序列化的所述数据模型model实体;
确定所述待序列化的所述数据模型model实体中包含的所述至少一个属性信息。
基于第三方面及其第三方面的第一种至第二种可实现方式,在第三方面的第五种可实现方式中,所述确定所述JSON数据的至少一个属性信息包括:
将所述JSON数据转换为字典数据;
确定由所述JSON数据转换得到的所述字典数据的至少一个属性信息。
本申请的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本申请的第五方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本申请实施例具有以下优点:服务器获取JSON数据,通过确定JSON数据的至少一个属性信息后,再确定得到至少一个属性信息对应的至少一种数据类型,并根据预置的数据格式化方法与数据类型的对应关系得到至少一种数据格式化方法,从而按照该至少一种数据格式化方法将JSON数据序列化为数据模型model实体。在本实施例中,服务器通过预置数据格式化方法与数据类型的一一对应关系,从而可以直接确定得到JSON数据的至少一种数据格式化方法,并将JSON数据进行序列化,而不用随着数据属性信息改变不断修改数据格式化方法的代码,从而节省了管理代码的工作量。
附图说明
图1为本申请数据序列化方法的一个实施例示意图;
图2为本申请数据序列化方法的另一个实施例示意图;
图3为本申请服务器的一个结构示意图;
图4为本申请服务器的另一个结构示意图。
具体实施方式
本申请实施例提供了一种数据的序列化方法,用于根据预置的数据类型与数据格式化方法的对应关系,将JSON(javascript object notation)数据序列化为数据模型model实体。
本申请应用于Flask框架中,结合Python修饰器,利用Python语言的特性和功能以及Flask框架的特点,实现JSON数据反序列化为数据模型model实体。
请参照图1,下面将对本申请实施例的一种数据序列化方法进行说明。
101、获取JSON数据。
服务器获取终端发送的JSON数据,并得到该JSON数据的待序列化数据模型实体,每个JSON数据对应一个待序列化数据模型实体,JSON数据发生变化时,对应的待序列化数据模型实体也发生变化。
待序列化数据模型实体可以由服务器接收JSON数据后解析JSON数据得到,也可以由终端根据需要发送的JSON数据生成待序列化数据模型实体后发送至服务器,具体此处不作限定。
在本实施例中,JSON数据可以为文章、用户信息、网页信息等。
102、确定JSON数据的至少一个属性信息。
可以理解的是,文章、用户信息等JSON数据中,可以包括多个属性信息。
确定JSON数据的至少一个属性信息的有两种可实现的方式:1、每个JSON数据得到的待序列化数据模型实体中包括该JSON数据的多个属性信息(包括属性名和属性值),后台程序解析待序列化数据模型实体,确定其中包含的至少一个属性信息。
2、先将JSON数据转换为字典数据,转换后得到的字典数据中包含该JSON数据的多个属性信息(包括属性名和属性值),后台程序解析字典数据,确定其中包含的至少一个属性信息。
103、确定至少一个属性信息对应的至少一种数据类型。
对每个属性信息对应的属性进行分析得到其对应的数据类型,数据类型可以为字符串、日期、文本等,还可以为其他可能的情况,在本实施例中,一个属性只有一种数据类型与之对应,例如出生年月对应日期类型,同时可以有多个属性对应一种数据类型。
104、根据预置的数据格式化方法与数据类型的一一对应关系,确定与至少一种数据类型对应的至少一种数据格式化方法。
服务器中预置有修饰器模块,修饰器模块可以确定待序列化数据模型实体中包含的至少一种数据类型,且修饰器模块中预置有每种数据类型与数据格式化方法的对应关系。其中预置的数据类型与数据格式化方法的对应关系通过编写代码实现,不同的数据类型需要编写不同的代码。
需要说明的是,服务器还可以通过类型识别模块对待序列化数据模型实体或字典数据的属性信息一一解读,并确定得到每个属性信息对应的数据格式化方法。
随后,根据预置的数据类型与数据格式化方法的一一对应关系得到JSON数据的至少一种数据类型对应的至少一种数据格式化方法。
105、根据至少一种数据格式化方法将JSON数据序列化为数据模型model实体。
在本实施例中,确定数据格式化方法后,还需要建立属性值与数据格式化方法的对应关系,从而完成属性值的格式化。JSON数据的属性信息中包括属性名和属性值,而数据格式化方法又是由属性信息确定得到的,每个属性信息对应的数据格式化方法即可以对该属性信息的属性值进行格式化。
在本实施例中,对属性值进行格式的过程即进行数据格式转换或数据类型转换的过程,可以将一种数据类型的数据按照数据格式化方法转换为另一种数据类型的数据,可以把日期类型的数据转换为文本类型或字符串类型的数据,也可以将文本类型的数据转换为字符串类型的数据,具体此处不做限定。例如将JSON数据中的日期类型数据“1995-1-1”转换为文本类型数据“19950101”写入model实体。
完成属性值格式化后,随后将格式化后的属性值写入数据模型实体。从而实现JSON数据到model实体的序列化。
在本实施例中,服务器获取JSON数据后,通过确定JSON数据的至少一个属性信息后,再确定得到至少一个属性信息对应的至少一种数据类型,并根据预置的数据格式化方法与数据类型的对应关系得到至少一种数据格式化方法,从而按照该至少一种数据格式化方法将JSON数据序列化为数据模型model实体。在本实施例中,服务器通过预置数据格式化方法与数据类型的一一对应关系,从而可以直接确定得到JSON数据的至少一种数据格式化方法,并将JSON数据进行序列化,而不用随着属性信息类型改变不断修改数据格式化方法的代码,从而节省了管理代码的工作量。
在本实施例中,需要根据JSON数据的属性名将属性值写入数据模型实体的对应位置,请参照图2,下面将进行说明。
201、获取JSON数据。
在本实施例中,请参照表1,获取JSON数据后得到对应的待序列化数据模型实体,JSON数据先转换为字典数据,从而得到字典信息,字典信息包括JSON数据的属性信息(包括属性名和属性值),待序列化数据模型实体中包含相同的属性名,而属性值需要进行数据格式转换后再写入待序列化的数据模型实体。
表1
202、确定JSON数据的至少一个属性信息。
203、确定与至少一个属性信息对应的至少一种数据类型。
204、根据预置的数据格式化方法与数据类型的一一对应关系,确定与至少一种数据类型对应的至少一种数据格式化方法。
在本实施例中,实施例步骤201至204与上述实施例步骤101至104类似,具体此处不再赘述。
205、确定JSON数据中每个属性名对应的属性值。
JSON数据包含多个属性信息,每个属性信息中包含一个属性名和一个属性值,查找字典信息得到每个属性名对应的属性值。
需要说明的是,JSON数据的待序列化数据模型实体中存在与JSON数据中相同的属性名。
206、将属性值按照对应的格式化数据格式化方法进行格式化,直至完成格式化JSON数据中全部属性值的格式化。
数据格式化方法是由数据类型确定的,而数据类型是由数据属性信息确定的,每种数据属性信息有其对应的属性值,建立属性值与数据格式化方法的对应关系,并将该数据值按照对应的数据格式化方法进行格式化,从而完成JSON数据中全部属性值格式的转换,具体为:
首先确定至少一种数据格式化方法中与属性值中目标属性值对应的目标数据格式化方法,目标属性值为属性值中任意一个属性值,随后将目标属性值按照目标数据格式化方法进行格式化。重复执行此步骤直至完成JSON数据中全部属性值的格式化。
207、将格式化后的属性值写入数据模型实体。
依据数据模型model实体中与字典信息中相同的属性名,根据相同的属性名将格式化后的属性值写入待序列化数据模型实体中相应的位置。使得数据模型实体某一属性名的属性值是由字典信息中相同属性名的属性值转换而来。随后修饰器序列化完成后将把数据模型实体传递给view函数。
在本实施例中,服务器对JSON数据完成数据的序列化过程主要通过在服务器中内置Python修饰器模块来完成,修饰器模块具体调用如下代码实现序列化:
“@app.route(“/api/user”,methods=[‘post’])
@parse_json_to_model(user())
def handle_user(user):
print(user.username)”。
在本实施例中,需要根据字典信息与数据模型实体中相同的属性名进行属性值的写入,避免了数据转换过程可能的错误,同时当开发一个拥有庞大数据库的系统时,需要不断修改数据格式化方式的代码,这样会大大拖延项目开发进度。本申请通过一次性编写一个完整的JSON反序列化方法,可针对不同数据模型实体,提升了系统性能,加快了项目开发进度。
一种可能的应用场景为:参照表2,JSON数据中包含出生、年龄、用户代码,确定这三个属性信息的数据类型分别为日期、文本和字符串类型。查找服务器中预置的数据格式化方法与数据类型的一一对应关系得到日期类型的数据格式化方法A、文本类型的数据格式化方法B以及字符串类型的数据格式化方法C。将属性值A按照数据格式化方法A进行格式化、将属性值B按照数据格式化方法B进行格式化、同时将属性值C按照数据格式化方法C进行格式化得到格式化后的属性值A、B和C,并将格式化后的属性值写入待序列化数据模型实体的对应位置,得到序列化后的数据模型实体,序列化完成后,数据模型实体中种包含内容的一种可能的情况如表3所示。
表2
表3
上面从一种数据序列化方法的角度对本申请实施例进行了叙述,请参照图3,下面从一种服务器的角度对本申请实施例进行说明。
该服务器包括:
获取单元301,用于获取JSON数据;
确定单元302,用于确定所述JSON数据的至少一个属性信息;
所述确定单元302,还用于确定与所述至少一个属性信息对应的至少一种数据类型;
所述确定单元302,还用于根据预置的数据格式化方法与数据类型的一一对应关系,确定与所述至少一种数据类型对应的至少一种数据格式化方法;
序列化单元303,用于根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体。
可选的,所述JSON数据的每个属性信息对应一个属性名,所述序列化单元303,具体用于:
确定JSON数据中每个属性名对应的属性值;
将所述属性值按照对应的所述数据格式化方法进行格式化,直至完成所述JSON数据中全部属性值的格式化;
将格式化后的属性值写入所述数据模型实体。
可选的,所述序列化单元303,具体用于1>确定所述至少一种数据格式化方法中与属性值中目标属性值对应的目标数据格式化方法;
2>将所述目标属性值按照目标数据格式化方法进行格式化;
重复执行步骤1>和2>,直至完成所述JSON数据中全部属性值的格式化。
可选的,所述数据模型model实体中包括与JSON数据中相同的属性名,所述序列化单元303,具体用于根据所述相同的属性名,将格式化后的所述属性值写入所述数据模型实体的对应位置。
可选的,所述确定单元302,具体用于处理所述JSON数据得到待序列化的所述数据模型model实体;
确定所述待序列化的所述数据模型model实体中包含的所述至少一个属性信息。
可选的,所述确定单元302,具体用于将所述JSON数据转换为字典数据;
确定由所述JSON数据转换得到的所述字典数据的至少一个属性信息。
需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其带来的技术效果与本申请方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的部分或全部步骤。
接下来介绍本申请实施例提供的另一种服务器,请参阅图4所示,服务器400包括:
接收器401、发射器402、处理器403和存储器404(其中服务器400中的处理器403的数量可以一个或多个,图4中以一个处理器为例)。在本申请的一些实施例中,接收器401、发射器402、处理器403和存储器404可通过总线或其它方式连接,其中,图4中以通过总线连接为例。
存储器404可以包括只读存储器和随机存取存储器,并向处理器403提供指令和数据。存储器404的一部分还可以包括非易失性随机存取存储器(英文全称:Non-VolatileRandom Access Memory,英文缩写:NVRAM)。存储器404存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
处理器403控制服务器的操作,处理器403还可以称为中央处理单元(英文全称:Central Processing Unit,英文简称:CPU)。具体的应用中,服务器的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
上述本申请实施例揭示的方法可以应用于处理器403中,或者由处理器403实现。处理器403可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器403中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器403可以是通用处理器、数字信号处理器(英文全称:digital signal processing,英文缩写:DSP)、专用集成电路(英文全称:Application Specific Integrated Circuit,英文缩写:ASIC)、现场可编程门阵列(英文全称:Field-Programmable Gate Array,英文缩写:FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器404,处理器403读取存储器404中的信息,结合其硬件完成上述方法的步骤。
接收器401可用于接收输入的数字或字符信息,以及产生与服务器的相关设置以及功能控制有关的信号输入,发射器402可包括显示屏等显示设备,发射器402可用于通过外接接口输出数字或字符信息。
本申请实施例中,处理器403,用于执行前述数据库构建方法以及定位方法。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
Claims (8)
1.一种数据的序列化方法,应用于Flask框架中,结合Python修饰器,利用Python语言的特性和功能以及所述Flask框架的特点,实现JSON数据反序列化为数据模型model实体,其特征在于,包括:
获取所述JSON数据;
确定所述JSON数据的至少一个属性信息;
利用服务器中的Python修饰器模块确定与所述至少一个属性信息对应的至少一种数据类型,所述Python修饰器模块中预置有每种数据类型与数据格式化方法的对应关系;
根据预置的数据格式化方法与数据类型的一一对应关系,确定与所述至少一种数据类型对应的至少一种数据格式化方法;
根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体;
所述JSON数据的每个属性信息对应一个属性名,所述根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体包括:
确定JSON数据中每个属性名对应的属性值;
将所述属性值按照对应的所述数据格式化方法进行格式化,直至完成所述JSON数据中全部属性值的格式化;
将格式化后的属性值写入所述数据模型实体;
对所述JSON数据完成数据序列化,具体是:所述Python修饰器模块调用如下代码实现数据序列化:
“@app.route(“/api/user”,methods=[‘post’])
@parse_json_to_model(user())
def handle_user(user):
print(user.username)”。
2.根据权利要求1所述的方法,其特征在于,所述将所述属性值按照对应的所述数据格式化方法进行格式化,直至完成所述JSON数据中全部属性值的格式化包括:
1>确定所述至少一种数据格式化方法中与属性值中目标属性值对应的目标数据格式化方法;
2>将所述目标属性值按照目标数据格式化方法进行格式化;
重复执行步骤1>和2>,直至完成所述JSON数据中全部属性值的格式化。
3.根据权利要求1或2所述的方法,其特征在于,所述数据模型model实体中包括与JSON数据中相同的属性名,所述将格式化后的属性值写入所述数据模型实体包括:
根据所述相同的属性名,将格式化后的所述属性值写入所述数据模型实体的对应位置。
4.根据权利要求1至2中任一项所述的方法,其特征在于,所述确定所述JSON数据的至少一个属性信息包括:
处理所述JSON数据得到待序列化的所述数据模型model实体;
确定所述待序列化的所述数据模型model实体中包含的所述至少一个属性信息。
5.根据权利要求1至2中任一项所述的方法,其特征在于,所述确定所述JSON数据的至少一个属性信息包括:
将所述JSON数据转换为字典数据;
确定由所述JSON数据转换得到的所述字典数据的至少一个属性信息。
6.一种服务器,应用于Flask框架中,结合Python修饰器,利用Python语言的特性和功能以及所述Flask框架的特点,实现JSON数据反序列化为数据模型model实体,其特征的在于,包括:
获取单元,用于获取所述JSON数据;
确定单元,用于确定所述JSON数据的至少一个属性信息;
所述确定单元,还用于利用服务器中的Python修饰器模块确定与所述至少一个属性信息对应的至少一种数据类型;所述Python修饰器模块中预置有每种数据类型与数据格式化方法的对应关系;
所述确定单元,还用于根据预置的数据格式化方法与数据类型的一一对应关系,确定与所述至少一种数据类型对应的至少一种数据格式化方法;
序列化单元,用于根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体;
所述JSON数据的每个属性信息对应一个属性名,所述根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体包括:
确定JSON数据中每个属性名对应的属性值;
将所述属性值按照对应的所述数据格式化方法进行格式化,直至完成所述JSON数据中全部属性值的格式化;
将格式化后的属性值写入所述数据模型实体;
对所述JSON数据完成数据序列化,具体是:所述Python修饰器模块调用如下代码实现数据序列化:
“@app.route(“/api/user”,methods=[‘post’])
@parse_json_to_model(user())
def handle_user(user):
print(user.username)”。
7.一种服务器,应用于Flask框架中,结合Python修饰器,利用Python语言的特性和功能以及所述Flask框架的特点,实现JSON数据反序列化为数据模型model实体,其特征的在于,包括:存储器、收发器、处理器以及总线系统;其中,所述存储器用于存储程序;所述处理器用于执行所述存储器中的程序,包括如下步骤:
获取所述JSON数据;
确定所述JSON数据的至少一个属性信息;
利用服务器中的Python修饰器模块确定与所述至少一个属性信息对应的至少一种数据类型,所述Python修饰器模块中预置有每种数据类型与数据格式化方法的对应关系;
根据预置的数据格式化方法与数据类型的一一对应关系,确定与所述至少一种数据类型对应的至少一种数据格式化方法;
根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信;
所述处理器,还用于确定JSON数据中每个属性名对应的属性值;
将所述属性值按照对应的所述数据格式化方法进行格式化,直至完成所述JSON数据中全部属性值的格式化;
将格式化后的属性值写入所述数据模型实体;
所述根据所述至少一种数据格式化方法将所述JSON数据序列化为数据模型model实体,具体是:所述Python修饰器模块调用如下代码实现数据序列化:
“@app.route(“/api/user”,methods=[‘post’])
@parse_json_to_model(user())
def handle_user(user):
print(user.username)”。
8.根据权利要求7所述的服务器,其特征在于,所述数据模型model实体中包括与JSON数据中相同的属性名,所述将格式化后的属性值写入所述数据模型实体包括:
根据所述相同的属性名,将格式化后的所述属性值写入所述数据模型实体的对应位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810685140.5A CN108874387B (zh) | 2018-06-27 | 2018-06-27 | 一种数据序列化方法及其相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810685140.5A CN108874387B (zh) | 2018-06-27 | 2018-06-27 | 一种数据序列化方法及其相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874387A CN108874387A (zh) | 2018-11-23 |
CN108874387B true CN108874387B (zh) | 2022-05-17 |
Family
ID=64296229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810685140.5A Active CN108874387B (zh) | 2018-06-27 | 2018-06-27 | 一种数据序列化方法及其相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874387B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737404A (zh) * | 2020-06-26 | 2020-10-02 | 豆盟(北京)科技股份有限公司 | 数据处理方法、装置、设备和计算机存储介质 |
CN112328231B (zh) * | 2020-10-14 | 2024-02-23 | 远江盛邦(北京)网络安全科技股份有限公司 | python字典和结构体间的快速转换方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593194A (zh) * | 2013-11-21 | 2014-02-19 | 北京国双科技有限公司 | 对象序列化方法和装置 |
CA3022373A1 (en) * | 2016-04-29 | 2017-11-02 | Intuit Inc. | Method and system for developing and deploying data science transformations from a development computing environment into a production computing environment |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103220285B (zh) * | 2013-04-10 | 2016-09-28 | 中国科学技术大学苏州研究院 | 泛在业务环境下基于RESTful接口的接入系统 |
JP6174908B2 (ja) * | 2013-05-27 | 2017-08-02 | キヤノン株式会社 | 情報処理装置、情報処理方法、及び、コンピュータプログラム |
CN105068801A (zh) * | 2015-08-06 | 2015-11-18 | 福建天晴数码有限公司 | 修改json日期格式的方法及系统 |
CN106547729B (zh) * | 2016-12-01 | 2019-02-01 | 长城计算机软件与系统有限公司 | 一种数据报表的动态生成方法及系统 |
CN106682099A (zh) * | 2016-12-01 | 2017-05-17 | 北京奇虎科技有限公司 | 一种数据的存储方法和装置 |
CN106682097B (zh) * | 2016-12-01 | 2020-06-05 | 北京奇虎科技有限公司 | 一种处理日志数据的方法和装置 |
-
2018
- 2018-06-27 CN CN201810685140.5A patent/CN108874387B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593194A (zh) * | 2013-11-21 | 2014-02-19 | 北京国双科技有限公司 | 对象序列化方法和装置 |
CA3022373A1 (en) * | 2016-04-29 | 2017-11-02 | Intuit Inc. | Method and system for developing and deploying data science transformations from a development computing environment into a production computing environment |
Non-Patent Citations (2)
Title |
---|
Hardware and software implementation of real time electrooculogram (EOG) acquisition system to control computer cursor with eyeball movement;Zakir Hossain等;《2017 4th International Conference on Advances in Electrical Engineering (ICAEE)》;20180115;第132 - 137页 * |
基于远程对象技术的分布式科学数据计算框架研究;陈泰燃;《cnki优秀硕士学位论文全文库 信息科技辑》;20160501;第I138-1177页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108874387A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108108162B (zh) | 应用程序编程接口生成方法及装置 | |
CN111428462B (zh) | 通讯协议模板构建的方法及终端设备 | |
US9075833B2 (en) | Generating XML schema from JSON data | |
WO2017156916A1 (zh) | 数据访问方法和装置 | |
CN112765023B (zh) | 测试用例生成方法、装置 | |
US11650754B2 (en) | Data accessing method, device, and storage medium | |
CN111177113B (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
WO2022142743A1 (zh) | 可视化页面渲染方法、装置、设备及存储介质 | |
CN110647316B (zh) | 通用业务对象的生成方法、装置、计算机设备及存储介质 | |
WO2021051624A1 (zh) | 数据获取方法、装置、电子设备及存储介质 | |
WO2021259290A1 (zh) | 存储过程转换方法、装置、设备和存储介质 | |
CN108874387B (zh) | 一种数据序列化方法及其相关设备 | |
CN110825435B (zh) | 用于处理数据的方法和装置 | |
CN111159215A (zh) | Java类与关系型数据库的映射方法、装置及计算设备 | |
CN111753140A (zh) | Xml文件解析方法及相关设备 | |
CN110825745B (zh) | 页面的生成方法及装置 | |
CN110633258B (zh) | 日志插入方法、装置、计算机装置及存储介质 | |
CN113050921A (zh) | 一种网页转换方法、装置、存储介质和计算机设备 | |
CN111177089B (zh) | 日志处理代码的生成方法和装置、计算机系统和存储介质 | |
CN112256252B (zh) | 接口生成方法、装置、存储介质及电子设备 | |
CN112799760A (zh) | 一种表单渲染方法及其装置 | |
CN112818267A (zh) | 数据处理方法、装置、计算机可读存储介质及电子设备 | |
CN116414689A (zh) | 一种基于反射机制的接口参数校验方法及系统 | |
CN116257232A (zh) | 基于表格组件的表格生成方法、装置、设备及存储介质 | |
CN114968917A (zh) | 一种文件数据快速导入方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: South South technology twelve road 518057 in Guangdong province Shenzhen City Guangdong streets Nanshan District high tech Industrial Park, No. 2, Kingdee Software Park building A floor 2 South Block Applicant after: Shenzhen Kingdee tianyanyun computing Co., Ltd. Address before: South South technology twelve road 518000 in Guangdong province Shenzhen City Guangdong streets Nanshan District high tech Industrial Park, No. 2, Kingdee Software Park building A floor 2 South Block Applicant before: Shenzhen Kingdee middleware Limited by Share Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |