CN109460220A - 报文预定义代码生成方法、装置、电子设备和存储介质 - Google Patents
报文预定义代码生成方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN109460220A CN109460220A CN201811220484.5A CN201811220484A CN109460220A CN 109460220 A CN109460220 A CN 109460220A CN 201811220484 A CN201811220484 A CN 201811220484A CN 109460220 A CN109460220 A CN 109460220A
- Authority
- CN
- China
- Prior art keywords
- information
- field
- message
- data
- mapping set
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000013507 mapping Methods 0.000 claims abstract description 73
- 238000004458 analytical method Methods 0.000 claims abstract description 16
- 238000004590 computer program Methods 0.000 claims description 11
- 238000002372 labelling Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 abstract description 10
- 230000015572 biosynthetic process Effects 0.000 abstract description 5
- 230000003044 adaptive effect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- 238000009795 derivation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000010485 coping Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
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 Transfer Between Computers (AREA)
Abstract
本发明提供一种报文预定义代码生成方法、装置、电子设备和存储介质,通过根据样例报文的字段数据,得到字段标识和字段属性信息;在对象映射集合中获取字段标识对应的对象标识,对象映射集合包括用于指示业务对象的对象标识和对象定义信息;根据字段属性信息,确定对象映射集合中对象标识对应的对象定义信息;根据对象定义信息,生成或更新报文预定义代码,实现了对样例报文进行自动化分析,自适应更新或创建对应的业务对象定义,随着报文内容不断更新和丰富,本发明能够不断相应地对已有的报文预定义代码进行改进,或者生成新的报文预定义代码,提高了报文预定义代码的生成效率,进而提高了报文传输中序列化和反序列化的效率和可靠性。
Description
技术领域
本发明涉及信息处理技术,尤其涉及一种报文预定义代码生成方法、装置、电子设备和存储介质。
背景技术
随着越来越丰富的数据传输需求,***间的接口调用通常会采用XML或JSON等数据格式进行数据报文的传输。***间数据传输的具体过程,是发送端将内存中的业务对象转为XML或JSON的数据报文(序列化),转输到接收端后,由接收端将数据报文再转化为业务对象存入内容中(反序列化)。报文预定义代码是序列化和反序列化过程的关键,因此需要提高报文预定义代码的生成效率。
传统模式下,在使用数据报文进行数据交换时,通信双方都需要为所使用的协议类型和版本进行相应的报文预定义代码编写,报文预定义代码中包含了对各种不同类型数据项的逻辑处理方式。当数据报文内容有更新时,需要开发人员对原有的解析代码进行重新设计,需要大量编写新的代码。
然而,随着信息技术的发展,数据报文所携带的信息越来越丰富,所需解析的数据量越来越大。依靠开发人员使用手工完成预定义代码编写过程中存在开发繁琐、工作量大、重复性工作较多等问题。现有的报文预定义代码生成方法效率不高。
发明内容
本发明提供一种报文预定义代码生成方法、装置、电子设备和存储介质,提高了报文预定义代码的生成效率。
根据本发明的第一方面,提供一种报文预定义代码生成方法,包括:
根据样例报文的字段数据,得到字段标识和字段属性信息;
在对象映射集合中获取所述字段标识对应的对象标识,所述对象映射集合包括用于指示业务对象的对象标识和对象定义信息;
根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息;
根据所述对象定义信息,生成或更新报文预定义代码。
可选地,在第一方面的一种可能实现方式中,所述在对象映射集合中获取所述字段标识对应的对象标识,包括:
判断在对象映射集合中是否已存储所述字段标识对应的对象标识;
若判断在所述对象映射集合中已存储所述字段标识对应的对象标识,则查找到预存储的所述对象标识;
若判断在所述对象映射集合中未存储所述字段标识对应的对象标识,则在所述对象映射集合中增加所述字段标识对应的对象标识。
可选地,在第一方面的另一种可能实现方式中,所述字段属性信息包括:字段类型信息和子元素信息;
在所述查找到预存储的所述对象标识之后,所述根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息,包括:
根据所述字段标识对应的字段类型信息和子元素信息,确定所述字段标识对应的样例定义信息;
将所述对象映射集合中所述对象标识对应的原对象定义信息,与所述样例定义信息进行差异比对,获取新增定义信息,其中,所述新增定义信息为与所述原对象定义信息不相同的样例定义信息;
将所述新增定义信息更新至所述原对象定义信息中,得到所述对象映射集合中所述对象标识对应的对象定义信息。
可选地,在第一方面的再一种可能实现方式中,所述字段属性信息包括:字段类型信息和子元素信息;
在所述对象映射集合中增加所述字段标识对应的对象标识之后,所述根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息,包括:
根据所述字段标识对应的字段类型信息和子元素信息,确定所述字段标识对应的样例定义信息;
将所述样例定义信息作为所述对象映射集合中所述对象标识对应的对象定义信息。
可选地,在第一方面的又一种可能实现方式中,所述根据样例报文的字段数据,得到字段标识和字段属性信息,包括:
获取样例报文,并确定所述样例报文的报文结构信息,所述报文结构信息包括XML格式结构或JSON格式结构;
根据所述报文结构信息和所述样例报文的字段数据,得到树形数据结构体,其中,所述树形数据结构体的各节点数据包括所述字段数据的字段标识和字段属性信息。
可选地,在第一方面的又一种可能实现方式中,所述字段属性信息包括:字段类型信息和子元素信息;
所述根据所述报文结构信息和所述样例报文中的字段数据,得到树形数据结构体,包括:
根据所述报文结构信息,获取对所述样例报文的各字段数据的节点位置和节点数据,其中,所述报文结构信息定义字段数据之间的从属关系,所述节点位置指示所述字段数据对应存储的节点,所述节点数据包括所述字段数据的字段标识、字段类型信息和子元素信息;
根据所述节点位置,将各所述节点数据存储入根节点、子节点或者叶子节点中,获得树形数据结构体。
可选地,在第一方面的又一种可能实现方式中,所述根据所述报文结构信息,获取对所述样例报文的各字段数据的节点位置和节点数据,包括:
将所述报文结构信息定义的最顶层字段数据作为目标数据;
获取所述目标数据的字段标识,若在所述样例报文已存储的节点数据中包括有所述目标数据的字段标识,则将多重标记写入所述目标数据的字段类型信息,其中,所述字段类型信息还包括对象类型以及所述目标数据的字符长度信息;
根据所述报文结构信息,获取从属于所述目标数据下一级的子数据;
获取所述子数据的字段类型信息,并根据所述子数据的字段类型信息确定所述目标数据的子元素信息;
根据所述报文结构信息,确定所述目标数据的节点位置,并将所述字段标识、所述字段类型信息和所述子元素信息,存储为所述节点位置的节点数据;
若所述子元素信息中包含有对象类型的子元素信息,则将所述对象类型的子数据作为所述目标数据,返回执行所述获取所述目标数据的字段标识。
可选地,在第一方面的又一种可能实现方式中,所述根据所述子数据的字段类型信息确定所述目标数据的子元素信息,包括:
若所述子数据的字段类型信息为空,则将可空类型确定为所述目标数据的子元素信息;
若所述子数据的字段类型信息包含文本类型,则将文本类型写入所述目标数据的子元素信息;
若所述子数据的字段类型信息包含对象类型,则将对象类型写入所述目标数据的子元素信息。
可选地,在第一方面的又一种可能实现方式中,所述根据样例报文的字段数据,得到字段标识和字段属性信息,还包括:
获取所述字段属性信息的数据来源信息;
所述根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息,还包括:
将所述数据来源信息写入所述对象定义信息。
根据本发明的第二方面,提供一种报文预定义代码生成装置,包括:
报文分析模块,用于根据样例报文的字段数据,得到字段标识和字段属性信息;
映射构建模块,用于在对象映射集合中获取所述字段标识对应的对象标识,所述对象映射集合包括用于指示业务对象的对象标识和对象定义信息;
对象定义模块,用于根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息;
代码生成模块,用于根据所述对象定义信息,生成或更新报文预定义代码。
根据本发明的第三方面,提供一种电子设备,包括:存储器、处理器以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行第一方面及第一方面各种可能实现方式中所述的报文预定义代码生成方法。
根据本发明的第四方面,提供一种存储介质,所述存储介质中存储有执行指令,所述执行指令被处理器执行时用于实现第一方面及第一方面各种可能实现方式中所述的报文预定义代码生成方法。
本发明提供的一种报文预定义代码生成方法、装置、电子设备和存储介质,通过根据样例报文的字段数据,得到字段标识和字段属性信息;在对象映射集合中获取所述字段标识对应的对象标识,所述对象映射集合包括用于指示业务对象的对象标识和对象定义信息;根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息;根据所述对象定义信息,生成或更新报文预定义代码,实现了对样例报文进行自动化分析,自适应更新或创建对应的业务对象定义,随着报文内容不断更新和丰富,本发明能够不断相应地对已有的报文预定义代码进行改进,或者生成新的报文预定义代码,提高了报文预定义代码的生成效率,进而提高了报文传输中序列化和反序列化的效率和可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种报文预定义代码生成方法的应用场景示意图;
图2是本发明实施例提供的一种报文预定义代码生成方法流程示意图;
图3是本发明实施例提供的一种XML格式结构的样例报文示意图;
图4是图3所示样例报文的部分字段数据的结构关系示意图;
图5是本发明实施例提供的一种节点数据获取方法流程示意图;
图6为本发明实施例提供的一种报文预定义代码生成装置结构示意图;
图7是本发明实施例提供的一种电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应当理解,在本申请中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
应当理解,在本申请中,“与A相应的B”表示B与A相关联,根据A可以确定B。根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其他信息确定B。A与B的匹配,是A与B的相似度大于或等于预设的阈值。
取决于语境,如在此所使用的“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
参见图1,是本发明实施例提供的一种报文预定义代码生成方法的应用场景示意图。如图所述的用户端1与用户端2之间以报文的形式进行数据传输。在数据从用户端1发送给用户端2之前,用户端1和用户端2预先以本发明下列各种实施例中的报文预定义代码生成方法,利用样例报文生成报文预定义代码。样例报文可以是开发人员编写的。在数据传输过程中,用户端1利用预先生成的报文预定义代码对要传输的数据进行序列化处理过程,将构建得到报文通过有线传输方式或无线传输方式发送至用户端2。用户端2利用预先生成的报文预定义代码对接收到的报文进行反序列化处理,解析得到报文中的数据内容。
参见图2,是本发明实施例提供的一种报文预定义代码生成方法流程示意图,图2所示方法的执行主体可以是软件和/或硬件装置。包括步骤S101至步骤S104,具体如下:
S101,根据样例报文的字段数据,得到字段标识和字段属性信息。
样例报文的结构可以理解为至少包括XML格式结构和JSON格式结构。
作为一种可选的实现方式,可以通过构建树形数据结构体存储字段标识和字段属性信息。具体地,首先获取样例报文,并确定所述样例报文的报文结构信息,所述报文结构信息包括XML格式结构或JSON格式结构。由于XML格式结构和JSON格式结构虽然都是树形结构的报文结构,但在格式上以及信息种类上仍存在差异,因此需要根据不同的报文结构获取到相应的报文结构信息。
然后根据所述报文结构信息和所述样例报文的字段数据,得到树形数据结构体。其中,所述树形数据结构体的各节点数据包括所述字段数据的字段标识和字段属性信息。参见图3,是本发明实施例提供的一种XML格式结构的样例报文示意图。参见图4,是图3所示样例报文的部分字段数据的结构关系示意图。
可选地,所述字段属性信息可以是包括:字段类型信息和子元素信息。
字段类型信息例如是该字段是对象类型还是文本类型。其中,对象类型是指该字段之下还有从属内容。子元素信息是指当前字段的从属内容。例如图3和图4所示的报文在“反馈请求”(response)字段之下包括子元素:结果代码(result_code)为“0”、代码信息(message)为“成功”以及包含有更下一级子元素的保单对象。其中,结果代码和代码信息的字段类型为文本类型,而保单对象的字段类型为对象类型。图3所示XML格式结构的报文,可以解析为图4所示的树形关系。根节点为“反馈请求”,根节点之下一级的子节点包括结果代码、代码信息以及保单对象。其中,结果代码和代码信息均为叶子节点,没有更下一级的子元素,而保单对象还分出子元素包括保单类型(type)、证件号(policy_no)、投保人对象(applicant)以及其他可能的子元素。保单类型(type)和证件号为叶子节点。投保人对象作为对象类型的子元素,其下包括姓名、地址对象、邮箱、性别。其中,姓名、邮箱、性别为叶子节点。地址对象有两个,第一个地址对象包括地址文本、地址类型和编号;第二个地址对象包括地址文本和地址类型。
在上述实现方式中,所述根据所述报文结构信息和所述样例报文中的字段数据,得到树形数据结构体的一种实现过程具体可以是:先根据所述报文结构信息,获取对所述样例报文的各字段数据的节点位置和节点数据。然后根据所述节点位置,将各所述节点数据存储入根节点、子节点或者叶子节点中,获得树形数据结构体。
其中,所述报文结构信息定义了字段数据之间的从属关系,所述报文结构信息可以理解为各种格式结构下的格式信息、语法规则。所述节点位置指示了所述字段数据对应存储的节点,所述节点数据包括所述字段数据的字段标识、字段类型信息和子元素信息。字段标识可以是字段名,也可以是字段ID。例如一个叶子节点数据包括:字段标识为张三、字段类型信息为文本类型、子元素信息为空。
可以理解为,通过确定出每个字段的节点位置和节点数据,然后存储到树形数据结构体中,完成树形数据结构体的构建。通过构建的树形数据结构体,可以便于对字段标识和字段属性信息的快速查询和获取,提高报文分析的效率。
参见图5,是本发明实施例提供的一种节点数据获取方法流程示意图。可选地,在构建树形数据结构体的过程中,所述根据所述报文结构信息,获取对所述样例报文的各字段数据的节点位置和节点数据,可以是以递归循环分析报文中各个字段的方式实现的。图5所示的流程具体包括不做S201至S208,具体如下:
S201,将所述报文结构信息定义的最顶层字段数据作为目标数据。
例如图3和图4所示报文中的“反馈请求”为该报文的最顶层字段数据,其对应于根节点。本实施例优选为从根节点依次向下遍历各个子节点的数据,直到全部遍历至叶子节点为止。
S202,获取所述目标数据的字段标识,若在所述样例报文已存储的节点数据中包括有所述目标数据的字段标识,则将多重标记写入所述目标数据的字段类型信息。
其中,所述字段类型信息还包括对象类型以及所述目标数据的字符长度信息。多重标记是用于标识该字段数据可以在同一报文中重复多次出现,例如地址对象、地址文本和地址类型都是在同一报文中出现过2次的,应当在其字段类型信息中写入多重标记,以便对其准确定义。
S203,根据所述报文结构信息,获取从属于所述目标数据下一级的子数据。
S204,获取所述子数据的字段类型信息,并根据所述子数据的字段类型信息确定所述目标数据的子元素信息。
字段类型信息可以理解为文本类型、对象类型以及空。子数据的字段类型信息为空表示当前目标数据下属没有子元素,可以理解为该对象下的子元素为可填的,例如图3所示地址对象的子节点中,遍历至第一个地址对象包含有“编号”为“100123”,但第二个地址对象对应的“编号”为空,则应对地址对象中的子元素编号可空,写入地址对象的子元素信息中。
在一种可选的实现方式中,具体实现方式可以包括:
若所述子数据的字段类型信息为空,则将可空类型确定为所述目标数据的子元素信息;
若所述子数据的字段类型信息包含文本类型,则将文本类型写入所述目标数据的子元素信息;
若所述子数据的字段类型信息包含对象类型,则将对象类型写入所述目标数据的子元素信息。
本实施例中步骤S202与步骤S203-S204为两个独立的过程,并不受所描述的动作顺序的限制,步骤S202与步骤S203-S204可以采用其他顺序或者同时进行。
S205,根据所述报文结构信息,确定所述目标数据的节点位置,并将所述字段标识、所述字段类型信息和所述子元素信息,存储为所述节点位置的节点数据。
所述字段类型信息和所述子元素信息可以理解为上述字段属性信息。存储为所述节点位置的节点数据可以理解为构建树形数据结构体。
S206,判断所述子元素信息中是否包含有对象类型的子元素信息。若是,则转入S207;若否则转入S208。
S207,将所述对象类型的子数据作为所述目标数据,返回执行S202。
可以理解为,若还有子元素是对象类型,可见该子元素不是叶子节点,需要继续向下执行上述循环过程。
S208,结束。
可以理解为,如果所述子元素信息中都不是对象类型,即所有分支均遍历到了叶子节点,完成了整个报文的遍历,转入S208结束循环。
S102,在对象映射集合中获取所述字段标识对应的对象标识,所述对象映射集合包括用于指示业务对象的对象标识和对象定义信息。
作为一种实现方式,对象标识的获取具体可以理解为:
判断在对象映射集合中是否已存储所述字段标识对应的对象标识,根据判断结构可以有如下两种不同的处理方式。
若在对象映射集合中已存储所述字段标识对应的对象标识,表明对象映射集合已存储有该对象标识指示对象的信息,则查找到预存储的所述对象标识,实现查找对象标识。
若在对象映射集合中没有存储所述字段标识对应的对象标识,表明对象映射集合还没有该对象标识指示对象的信息,则在所述对象映射集合中增加所述字段标识对应的对象标识,实现创建对象标识。
本实施例中,对象映射集合可以理解为是一个对象字典,用于记录对象及其定义的对应关系。
S103,根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息。
可以理解为,所述字段属性信息包括:字段类型信息和子元素信息。
在对象映射集合已存储有该对象标识指示对象的信息,并查找到所述对象标识的实现方式中,确定对象定义信息的具体方式可以是:首先根据所述字段标识对应的字段类型信息和子元素信息,确定所述字段标识对应的样例定义信息。样例定义信息中也可以包含有字段标识,例如字段名或字段编码等。然后将所述对象映射集合中所述对象标识对应的原对象定义信息,与所述样例定义信息进行差异比对,获取新增定义信息,其中,所述新增定义信息为与所述原对象定义信息不相同的样例定义信息。所述新增定义信息例如原保单对象中地址对象只有1个,而新的报文中地址对象可以有2个或多个,则新增定义信息包含地址对象的多重标记。最后将所述新增定义信息更新至所述原对象定义信息中,得到所述对象映射集合中所述对象标识对应的对象定义信息。对象定义信息中也可以有对象标识,例如对象名、对象所在的命名空间和/或对象的编码等信息,可以用于标识该对象定义信息对应的对象。
在对象映射集合没有存储有该对象标识指示对象的信息,并创建所述对象标识的实现方式中,确定对象定义信息的具体方式可以是:首先根据所述字段标识对应的字段类型信息和子元素信息,确定所述字段标识对应的样例定义信息。然后直接将所述样例定义信息作为所述对象映射集合中所述对象标识对应的对象定义信息。
在上述各种实现方式中,为了更加清楚定义报文的各个字段数据,步骤S101(根据样例报文的字段数据,得到字段标识和字段属性信息),还可以包括:获取所述字段属性信息的数据来源信息。数据来源信息例如获取到投保人对象的字段标识和字段属性信息的同时或之前,或之后,还可以获取投保人对象的数据来源,即保人对象字段数据在报文中的位置。在报文中的位置可以用参数名来体现。
在获取了数据来源信息的基础上,S103(根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息)也还可以包括:将所述数据来源信息写入所述对象定义信息。从而提高对象定义信息的准确性。
S104,根据所述对象定义信息,生成或更新报文预定义代码。
报文预定义代码可以是C语言或Java语言的代码,可以根据实际需求进行相应语言的报文预定义代码生成。具体地,可以采用ClassFile GeneratorBase的某一子类,将所述对象定义信息生成报文预定义代码。在具体生成新的报文预定义代码中,或者是在旧的报文预定义代码做更新时,都可以将各对象的子元素样例数据在代码中生成对应的注释,以方便开发人员参考使用。
例如对于图3和图4中代码信息对应生成的预定义代码,可以是如下:
*************************************************************
///<summary>
///message(必填)
///example:[成功]
///</summary>
///<example>[成功]</example>
[XmlElement(ElementName="message",Namespace="")]
public string message{get;set;}
*************************************************************
上述作为示例的报文预定义代码中,[XmlElement(ElementName="message",Namespace="")]定义了数据来源;public string message{get;set;}定义了代码信息。
本实施例提供的一种报文预定义代码生成方法,通过根据样例报文的字段数据,得到字段标识和字段属性信息;在对象映射集合中获取所述字段标识对应的对象标识,所述对象映射集合包括用于指示业务对象的对象标识和对象定义信息;根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息;根据所述对象定义信息,生成或更新报文预定义代码,实现了对样例报文进行自动化分析,自适应更新或创建对应的业务对象定义,随着报文内容不断更新和丰富,本发明能够不断相应地对已有的报文预定义代码进行改进,或者生成新的报文预定义代码,提高了报文预定义代码的生成效率,进而提高了报文传输中序列化和反序列化的效率和可靠性。
上述实施例生成的报文预定义代码可用于序列化过程和反序列化过程中,通过分析报文结构,找到报文中存在的所有对象,即使同一对象多次出现,可以通过多重标记以及字段标识等方式进行区别和合并,提高了数据传输中接口对接开发的效率,从而提高了报文解析和构建的效率。
作为一种可选的实现方式,上述各种实施例中可以通过调用下列各种对象函数来实现相应的步骤。
DataAnalyzor:抽象类,用于定义从各种报文中分析得到对象结构定义。从此类中派生的XmlAnalyzor和JsonAnalyzor分别用于XML和JSON报文的分析。
ClassFileGeneratorBase:抽象类,用于定义从对象结构定义中生成不同编程语言中对象定义代码。从此类中派生的CSharpGenerator和JavaGenerator分别用于产生C#和JAVA语言的报文预定义代码。
ClassesInfo:是一个集合,其中定义了对于开发语言中立的业务对象元定义信息。其中包括类定义对象ClassDef的集合、命名空间定义对象NameSpaceDef的集合。
ClassDef:对业务对象的定义信息。其中包括了业务对象本身的信息(例如对象标识),以及包括的属性信息定义PropertyDef的集合。
PropertyDef:对业务对象的属性定义信息。包括了属性名称、类型、多重性、可空性等定义。
参见图6,是本发明实施例提供的一种报文预定义代码生成装置结构示意图。图6所示的报文预定义代码生成装置60主要包括:
报文分析模块61,用于根据样例报文的字段数据,得到字段标识和字段属性信息;
映射构建模块62,用于在对象映射集合中获取所述字段标识对应的对象标识,所述对象映射集合包括用于指示业务对象的对象标识和对象定义信息;
对象定义模块63,用于根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息;
代码生成模块64,用于根据所述对象定义信息,生成或更新报文预定义代码。
图6所示实施例的报文预定义代码生成装置60对应地可用于执行图2所示方法实施例中的步骤,其实现原理和技术效果类似,此处不再赘述。
可选地,所述映射构建模块62具体用于:
判断在对象映射集合中是否已存储所述字段标识对应的对象标识;若是,则查找到预存储的所述对象标识;若否,则在所述对象映射集合中增加所述字段标识对应的对象标识。
可选地,所述字段属性信息包括:字段类型信息和子元素信息。在所述映射构建模块62查找到预存储的所述对象标识之后,所述对象定义模块63用于:
根据所述字段标识对应的字段类型信息和子元素信息,确定所述字段标识对应的样例定义信息;将所述对象映射集合中所述对象标识对应的原对象定义信息,与所述样例定义信息进行差异比对,获取新增定义信息,其中,所述新增定义信息为与所述原对象定义信息不相同的样例定义信息;将所述新增定义信息更新至所述原对象定义信息中,得到所述对象映射集合中所述对象标识对应的对象定义信息。
可选地,所述字段属性信息包括:字段类型信息和子元素信息。在所述映射构建模块62在所述对象映射集合中增加所述字段标识对应的对象标识之后,所述对象定义模块63用于:
根据所述字段标识对应的字段类型信息和子元素信息,确定所述字段标识对应的样例定义信息;将所述样例定义信息作为所述对象映射集合中所述对象标识对应的对象定义信息。
可选地,所述报文分析模块61用于:
获取样例报文,并确定所述样例报文的报文结构信息,所述报文结构信息包括XML格式结构或JSON格式结构;根据所述报文结构信息和所述样例报文的字段数据,得到树形数据结构体,其中,所述树形数据结构体的各节点数据包括所述字段数据的字段标识和字段属性信息。
可选地,所述字段属性信息包括:字段类型信息和子元素信息。所述报文分析模块61用于:
根据所述报文结构信息,获取对所述样例报文的各字段数据的节点位置和节点数据,其中,所述报文结构信息定义了字段数据之间的从属关系,所述节点位置指示了所述字段数据对应存储的节点,所述节点数据包括所述字段数据的字段标识、字段类型信息和子元素信息;根据所述节点位置,将各所述节点数据存储入根节点、子节点或者叶子节点中,获得树形数据结构体。
可选地,所述报文分析模块61具体用于:将所述报文结构信息定义的最顶层字段数据作为目标数据;
获取所述目标数据的字段标识,若在所述样例报文已存储的节点数据中包括有所述目标数据的字段标识,则将多重标记写入所述目标数据的字段类型信息,其中,所述字段类型信息还包括对象类型以及所述目标数据的字符长度信息;根据所述报文结构信息,获取从属于所述目标数据下一级的子数据;获取所述子数据的字段类型信息,并根据所述子数据的字段类型信息确定所述目标数据的子元素信息;根据所述报文结构信息,确定所述目标数据的节点位置,并将所述字段标识、所述字段类型信息和所述子元素信息,存储为所述节点位置的节点数据;若所述子元素信息中包含有对象类型的子元素信息,则将所述对象类型的子数据作为所述目标数据,返回执行所述获取所述目标数据的字段标识。
可选地,所述报文分析模块61具体用于:若所述子数据的字段类型信息为空,则将可空类型确定为所述目标数据的子元素信息;
若所述子数据的字段类型信息包含文本类型,则将文本类型写入所述目标数据的子元素信息;
若所述子数据的字段类型信息包含对象类型,则将对象类型写入所述目标数据的子元素信息。
可选地,报文分析模块61还用于:
获取所述字段属性信息的数据来源信息。
相应地,所述对象定义模块63还用于:
将所述数据来源信息写入所述对象定义信息。
参见图7,是本发明实施例提供的一种电子设备的硬件结构示意图,该电子设备70包括:处理器71、存储器72和计算机程序;其中
存储器72,用于存储所述计算机程序,该存储器还可以是闪存(flash)。所述计算机程序例如是实现上述方法的应用程序、功能模块等。
处理器71,用于执行所述存储器存储的计算机程序,以实现上述方法中的各个步骤。具体可以参见前面方法实施例中的相关描述。
可选地,存储器72既可以是独立的,也可以跟处理器71集成在一起。
当所述存储器72是独立于处理器71之外的器件时,所述电子设备还可以包括:
总线73,用于连接所述存储器72和处理器71。
本发明还提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现上述的各种实施方式提供的方法。
其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(ApplicationSpecific Integrated Circuits,简称:ASIC)中。另外,该ASIC可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。可读存储介质可以是只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的方法。
在上述电子设备的实施例中,应理解,处理器可以是中央处理单元(英文:CentralProcessing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:DigitalSignal Processor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种报文预定义代码生成方法,其特征在于,包括:
根据样例报文的字段数据,得到字段标识和字段属性信息;
在对象映射集合中获取所述字段标识对应的对象标识,所述对象映射集合包括用于指示业务对象的对象标识和对象定义信息;
根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息;
根据所述对象定义信息,生成或更新报文预定义代码。
2.根据权利要求1所述的方法,其特征在于,所述在对象映射集合中获取所述字段标识对应的对象标识,包括:
判断在所述对象映射集合中是否已存储所述字段标识对应的对象标识;
若判断在所述对象映射集合中已存储所述字段标识对应的对象标识,则查找到存储的所述对象标识;
若判断在所述对象映射集合中未存储所述字段标识对应的对象标识,则在所述对象映射集合中增加所述字段标识对应的对象标识。
3.根据权利要求2所述的方法,其特征在于,所述字段属性信息包括:字段类型信息和子元素信息;
在所述查找到预存储的所述对象标识之后,所述根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息,包括:
根据所述字段标识对应的字段类型信息和子元素信息,确定所述字段标识对应的样例定义信息;
将所述对象映射集合中所述对象标识对应的原对象定义信息,与所述样例定义信息进行差异比对,获取新增定义信息,其中,所述新增定义信息为与所述原对象定义信息不相同的样例定义信息;
将所述新增定义信息更新至所述原对象定义信息中,得到所述对象映射集合中所述对象标识对应的对象定义信息。
4.根据权利要求2所述的方法,其特征在于,所述字段属性信息包括:字段类型信息和子元素信息;
在所述对象映射集合中增加所述字段标识对应的对象标识之后,所述根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息,包括:
根据所述字段标识对应的字段类型信息和子元素信息,确定所述字段标识对应的样例定义信息;
将所述样例定义信息作为所述对象映射集合中所述对象标识对应的对象定义信息。
5.根据权利要求1所述的方法,其特征在于,所述根据样例报文的字段数据,得到字段标识和字段属性信息,包括:
获取样例报文,并确定所述样例报文的报文结构信息,所述报文结构信息包括XML格式结构或JSON格式结构;
根据所述报文结构信息和所述样例报文的字段数据,得到树形数据结构体,其中,所述树形数据结构体的各节点数据包括所述字段数据的字段标识和字段属性信息。
6.根据权利要求5所述的方法,其特征在于,所述字段属性信息包括:字段类型信息和子元素信息;
所述根据所述报文结构信息和所述样例报文中的字段数据,得到树形数据结构体,包括:
根据所述报文结构信息,获取对所述样例报文的各字段数据的节点位置和节点数据,其中,所述报文结构信息定义字段数据之间的从属关系,所述节点位置指示所述字段数据对应存储的节点,所述节点数据包括所述字段数据的字段标识、字段类型信息和子元素信息;
根据所述节点位置,将各所述节点数据存储入根节点、子节点或者叶子节点中,获得树形数据结构体。
7.根据权利要求6所述的方法,其特征在于,所述根据所述报文结构信息,获取对所述样例报文的各字段数据的节点位置和节点数据,包括:
将所述报文结构信息定义的最顶层字段数据作为目标数据;
获取所述目标数据的字段标识,若在所述样例报文已存储的节点数据中包括有所述目标数据的字段标识,则将多重标记写入所述目标数据的字段类型信息,其中,所述字段类型信息还包括对象类型以及所述目标数据的字符长度信息;
根据所述报文结构信息,获取从属于所述目标数据下一级的子数据;
获取所述子数据的字段类型信息,并根据所述子数据的字段类型信息确定所述目标数据的子元素信息;
根据所述报文结构信息,确定所述目标数据的节点位置,并将所述字段标识、所述字段类型信息和所述子元素信息,存储为所述节点位置的节点数据;
若所述子元素信息中包含有对象类型的子元素信息,则将所述对象类型的子数据作为所述目标数据,返回执行所述获取所述目标数据的字段标识。
8.一种报文预定义代码生成装置,其特征在于,包括:
报文分析模块,用于根据样例报文的字段数据,得到字段标识和字段属性信息;
映射构建模块,用于在对象映射集合中获取所述字段标识对应的对象标识,所述对象映射集合包括用于指示业务对象的对象标识和对象定义信息;
对象定义模块,用于根据所述字段属性信息,确定所述对象映射集合中所述对象标识对应的对象定义信息;
代码生成模块,用于根据所述对象定义信息,生成或更新报文预定义代码。
9.一种电子设备,其特征在于,包括:存储器、处理器以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行权利要求1~7任一所述的报文预定义代码生成方法。
10.一种存储介质,其特征在于,所述存储介质中存储有执行指令,所述执行指令被处理器执行时用于实现权利要求1~7任一所述的报文预定义代码生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811220484.5A CN109460220B (zh) | 2018-10-19 | 2018-10-19 | 报文预定义代码生成方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811220484.5A CN109460220B (zh) | 2018-10-19 | 2018-10-19 | 报文预定义代码生成方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109460220A true CN109460220A (zh) | 2019-03-12 |
CN109460220B CN109460220B (zh) | 2022-04-12 |
Family
ID=65607844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811220484.5A Active CN109460220B (zh) | 2018-10-19 | 2018-10-19 | 报文预定义代码生成方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109460220B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930612A (zh) * | 2020-07-09 | 2020-11-13 | 北京皮尔布莱尼软件有限公司 | 一种代码更新正确性的检测方法、装置及计算设备 |
CN112055018A (zh) * | 2020-09-03 | 2020-12-08 | 中国银行股份有限公司 | 报文分析方法及装置 |
CN112433722A (zh) * | 2020-11-27 | 2021-03-02 | 深圳前海微众银行股份有限公司 | 模块化***代码开发方法、装置、设备及*** |
CN112671842A (zh) * | 2020-12-08 | 2021-04-16 | 成都质数斯达克科技有限公司 | 信息传递方法、装置、电子设备及可读存储介质 |
CN112698819A (zh) * | 2019-10-22 | 2021-04-23 | 北京信普飞科科技有限公司 | 面向树化对象编程程序设计方法、装置及存储介质 |
CN113268306A (zh) * | 2021-06-08 | 2021-08-17 | 金蝶软件(中国)有限公司 | 简历解析接口调用方法、装置及计算机存储介质 |
WO2022151835A1 (zh) * | 2021-01-18 | 2022-07-21 | 中国民航信息网络股份有限公司 | 一种样例报文处理方法及装置 |
CN115168365A (zh) * | 2022-09-01 | 2022-10-11 | 浪潮通信信息***有限公司 | 数据存储方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622444A (zh) * | 2012-03-15 | 2012-08-01 | 深圳市同洲视讯传媒有限公司 | 一种xml报文处理方法和装置 |
CN106598581A (zh) * | 2016-12-06 | 2017-04-26 | 成都能通科技有限公司 | 基于xml的asterix报文解析代码生成方法 |
-
2018
- 2018-10-19 CN CN201811220484.5A patent/CN109460220B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622444A (zh) * | 2012-03-15 | 2012-08-01 | 深圳市同洲视讯传媒有限公司 | 一种xml报文处理方法和装置 |
CN106598581A (zh) * | 2016-12-06 | 2017-04-26 | 成都能通科技有限公司 | 基于xml的asterix报文解析代码生成方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112698819A (zh) * | 2019-10-22 | 2021-04-23 | 北京信普飞科科技有限公司 | 面向树化对象编程程序设计方法、装置及存储介质 |
CN111930612A (zh) * | 2020-07-09 | 2020-11-13 | 北京皮尔布莱尼软件有限公司 | 一种代码更新正确性的检测方法、装置及计算设备 |
CN111930612B (zh) * | 2020-07-09 | 2024-03-19 | 北京皮尔布莱尼软件有限公司 | 一种代码更新正确性的检测方法、装置及计算设备 |
CN112055018A (zh) * | 2020-09-03 | 2020-12-08 | 中国银行股份有限公司 | 报文分析方法及装置 |
CN112055018B (zh) * | 2020-09-03 | 2023-05-23 | 中国银行股份有限公司 | 报文分析方法及装置 |
CN112433722A (zh) * | 2020-11-27 | 2021-03-02 | 深圳前海微众银行股份有限公司 | 模块化***代码开发方法、装置、设备及*** |
CN112671842A (zh) * | 2020-12-08 | 2021-04-16 | 成都质数斯达克科技有限公司 | 信息传递方法、装置、电子设备及可读存储介质 |
CN112671842B (zh) * | 2020-12-08 | 2022-07-12 | 成都质数斯达克科技有限公司 | 信息传递方法、装置、电子设备及可读存储介质 |
WO2022151835A1 (zh) * | 2021-01-18 | 2022-07-21 | 中国民航信息网络股份有限公司 | 一种样例报文处理方法及装置 |
CN113268306A (zh) * | 2021-06-08 | 2021-08-17 | 金蝶软件(中国)有限公司 | 简历解析接口调用方法、装置及计算机存储介质 |
CN113268306B (zh) * | 2021-06-08 | 2024-03-19 | 金蝶软件(中国)有限公司 | 简历解析接口调用方法、装置及计算机存储介质 |
CN115168365A (zh) * | 2022-09-01 | 2022-10-11 | 浪潮通信信息***有限公司 | 数据存储方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109460220B (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109460220A (zh) | 报文预定义代码生成方法、装置、电子设备和存储介质 | |
US10630614B2 (en) | Opaque message parsing | |
CN106598574B (zh) | 页面渲染的方法和装置 | |
CN105094754B (zh) | 基于标签的程序开发方法、页面请求响应方法及其装置 | |
CN110688122B (zh) | 编译和执行智能合约的方法及装置 | |
CN110704064B (zh) | 编译和执行智能合约的方法及装置 | |
CN110704063B (zh) | 编译和执行智能合约的方法及装置 | |
WO2021135477A1 (zh) | 基于概率图模型的文本属性抽取方法、装置、计算机设备及存储介质 | |
CN110597814B (zh) | 结构化数据的序列化、反序列化方法以及装置 | |
CN109343836B (zh) | 数据序列化、数据反序列方法、装置及设备 | |
WO2023124425A1 (zh) | 数据处理的方法、装置、电子设备及存储介质 | |
CN104320312A (zh) | 网络应用安全测试工具及模糊测试用例生成方法和*** | |
CN109144514B (zh) | Json格式数据解析存储方法及装置 | |
CN111240772B (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN113626223A (zh) | 一种接口调用方法和装置 | |
CN113961768A (zh) | 敏感词检测方法、装置、计算机设备和存储介质 | |
CN114995859A (zh) | 页面热更新方法、装置、设备及存储介质 | |
CN114168149A (zh) | 一种数据转换方法及装置 | |
CN114201756A (zh) | 一种智能合约代码片段的漏洞检测方法和相关装置 | |
CN110941655A (zh) | 一种数据格式转换方法及装置 | |
CN112883088B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN110633162B (zh) | 远程调用实现方法、装置、计算机设备及存储介质 | |
CN105793842B (zh) | 序列化消息之间的转换方法和装置 | |
CN113949749B (zh) | Xml报文处理方法及装置 | |
CN112084046B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |