CN114331416A - 数据处理的方法、装置、电子设备及存储介质 - Google Patents
数据处理的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114331416A CN114331416A CN202111656683.2A CN202111656683A CN114331416A CN 114331416 A CN114331416 A CN 114331416A CN 202111656683 A CN202111656683 A CN 202111656683A CN 114331416 A CN114331416 A CN 114331416A
- Authority
- CN
- China
- Prior art keywords
- attribute
- data
- target object
- serialization
- annotation
- 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
Links
- 238000003672 processing method Methods 0.000 title abstract description 17
- 238000000034 method Methods 0.000 claims abstract description 66
- 230000007246 mechanism Effects 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 29
- 238000013507 mapping Methods 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 18
- 238000006243 chemical reaction Methods 0.000 abstract description 32
- 235000006719 Cassia obtusifolia Nutrition 0.000 description 28
- 235000014552 Cassia tora Nutrition 0.000 description 28
- 244000201986 Cassia tora Species 0.000 description 27
- 230000008569 process Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 244000277285 Cassia obtusifolia Species 0.000 description 1
- 241000465502 Tobacco latent virus Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/20—Point-of-sale [POS] network systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/32—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using wireless devices
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Finance (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Abstract
本申请适用于电子支付技术领域,提供了一种数据处理的方法、装置、电子设备及存储介质。所述方法,包括:获取目标对象;利用反射机制依次获取所述目标对象的各个属性的注解;所述注解包含所述各个属性的序列化参数;针对所述目标对象的每个属性,基于所述属性对应注解的序列化参数,将所述属性转换为第一序列化数据;基于各个属性的所述第一序列化数据,生成所述目标对象的第二序列化数据。可以在不需要第三方依赖库的情况下,实现目标对象和序列化数据之间的转换,并且由于注解中的序列化参数可以定制和调整,提高了目标对象和序列化数据之间的转换的灵活性。
Description
技术领域
本申请属于电子支付技术领域,尤其涉及一种数据处理的方法、装置、电子设备及存储介质。
背景技术
POS(Point of sales,POS)终端与服务器(Server)通讯需要将交换数据,例如JavaBean对象,以数据序列的方式进行传输。如何提供一种灵活的以及可扩展的将交换数据和数据序列之间进行转换的方法,成为需要解决的问题。
发明内容
本申请实施例提供了一种数据处理的方法、装置、电子设备及存储介质,可以解决上述问题的至少一部分。
第一方面,本申请实施例提供了一种数据处理的方法,包括:
获取目标对象;
利用反射机制依次获取所述目标对象的每个属性的注解;所述注解包含其对应属性的序列化参数;
针对所述目标对象的每个属性,基于所述属性对应注解的序列化参数,将所述属性转换为第一序列化数据;
基于各个属性的所述第一序列化数据,输出所述目标对象对应的第二序列化数据。
应理解,本申请实施例在注解包含目标对象各个属性的序列化参数,并在将目标对象进行序列化前利用反射机制获取各个属性的注解,基于属性对应注解的序列化参数将所述属性转换为第一序列化数据,可以在不需要第三方依赖库的情况下,实现目标对象和序列化数据之间的转换,并且由于注解中配置的序列化参数可以定制和调整,提高了目标对象和序列化数据之间的转换的灵活性。
第二方面,本申请实施例提供了一种数据处理的方法,包括:
获取目标序列化数据;
解析所述目标序列化数据,生成标识净荷映射表;所述标识净荷映射表包含目标对象的每个属性的标识,和所述属性的第一序列化数据之间的对应关系;所述目标对象为所述目标序列化数据对应的对象;
利用反射机制构造目标对象,并依次获取所述目标对象的各个属性的注解;
针对目标对象的每个属性,基于所述属性对应注解中的标识,利用所述标识净荷映射表获得所述属性的净荷,反序列化所述净荷获得所述属性的值,并利用反射机制为所述属性赋值;
输出每个属性均赋值后的所述目标对象。
第三方面,本申请实施例提供了一种数据处理的装置,包括:
目标对象获取模块,用于获取目标对象;
属性注解获取模块,用于利用反射机制依次获取所述目标对象的每个属性的注解;所述注解包含其对应属性的序列化参数;
第一序列化模块,用于针对所述目标对象的每个属性,基于所述属性对应注解的指示参数,将所述属性转换为第一序列化数据;
第二序列化模块,用于基于各个属性的所述第一序列化数据,生成所述目标对象的第二序列化数据。
第四方面,本申请实施例提供了一种数据处理的装置,包括:
序列化数据获取模块,用于获取目标序列化数据;
标识净荷列表生成模块,用于解析所述目标序列化数据,生成标识净荷映射表;所述标识净荷映射表包含目标对象的每个属性的标识,和所述属性的第一序列化数据之间的对应关系;所述目标对象为所述目标序列化数据对应的对象;
属性注解获取模块,用于利用反射机制构造目标对象,并依次获取所述目标对象的各个属性的注解;
属性赋值模块,用于针对目标对象的每个属性,基于所述属性对应注解中的标识,利用所述标识净荷映射表获得所述属性的净荷,反序列化所述净荷获得所述属性的值,并利用反射机制为所述属性赋值;
目标对象输出模块,用于输出每个属性均赋值后的所述目标对象。
第五方面,本申请实施例提供了一种电子设备,包括:
存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第一方面或第二方面所述的方法步骤。
第六方面,本申请实施例提供了一种计算机可读存储介质,包括:所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面或第二方面所述的方法步骤。
第七方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面或第二方面所述的方法步骤。
可以理解的是,上述第二方面至第七方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的通信系统示意图;
图2是本申请一实施例提供的序列化和反序列化示意图;
图3是本申请一实施例提供的数据处理的方法的流程示意图;
图4是本申请另一实施例提供的数据处理的方法的流程示意图;
图5是本申请另一实施例提供的数据处理的方法的流程示意图;
图6是本申请一实施例提供的数据处理的方法的流程示意图;
图7是本申请另一实施例提供的数据处理的方法的流程示意图;
图8是本申请一实施例提供的TLV嵌套数据流示意图;
图9是本申请另一实施例提供的数据处理的方法的流程示意图;
图10是本申请实施例提供的数据处理的装置的结构示意图;
图11是本申请实施例提供的数据处理的装置的结构示意图;
图12是本申请实施例提供的电子设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在说明本申请实施例提供的数据处理方法之前,为方便对本申请实施例的理解,下面结合图1和图2对本申请实施例提供的数据方法的原理以及本申请实施例中涉及的相关概念进行说明。
图1示出的是本申请实施例提供的一种通信系统10,所述通信系统10包括终端设备110和服务端设备120。
在一些实施例中,终端设备110可以是POS终端,服务端设备120可以是服务器(Server)。
终端设备110和服务端设备120可以通过有线和/或无线的通信网络进行通信。终端设备和服务端设备通信时需要传输交换数据。当终端设备与服务端设备间需要传输交换数据时,例如,发送业务的请求消息和接收并解析该业务的请求消息时,或者发送响应消息和接收并解析该响应消息时,需要对交换数据进行序列化和反序列化的操作,以能够完成通信。
以交换数据为Java对象为例,发送端需要将Java对象转换为字节序列的形式,接收端收到字节序列后,将字节序列转换回Java对象。字节序列也称序列化数据。
以JavaBean对象与TLV(Tag-Length-Value)格式的字节序列之间的转换为例,参见图2,Java序列化就是指把Java对象转换为TLV格式字节序列的过程。Java反序列化就是指把TLV格式字节序列恢复为Java对象的过程。JavaBean是一些可移植、可重用,并可以组装到应用程序中的Java类。TLV(Tag-Length-Value)格式是一种编码方式,在TLV的字节序列包括三个域,分别为:标签域(Tag),长度域(Length),内容域(Value)。
图如2所示,JavaBean对象210和TLV格式字节序列220之间通过一个全局数据转换器(TlvTransformer)230进行相互转换。全局数据转换器230可以是运行在终端设备110或服务端设备120的程序段,也可以是配置在终端设备110或服务端设备120上,用于实现序列化和反序列化的处理器单元。
为了方便描述,以下实施例将终端设备和服务端设备合称为电子设备。
在本申请的具体的实施例方式中,考虑到POS终端与Server通讯时数据格式的灵活性及可扩展性,可以选择TLV(Tag-Length-Value)结构作为POS终端和Server数据交互的载体。
为了方便理解本申请的实施例,本申请以下各实施例以交换数据为JavaBean对象,序列化数据的结构为TLV结构为例进行说明。
应理解,本申请提供的数据处理的方法、装置、电子设备以及存储介质等实施例,同样适用于具有反射机制,并且实现了注解功能的程序语言的交换数据的序列化,也同样适用于除TLV结构之外的序列化数据的结构,例如Varints结构或ZigZag结构。本领域技术人员可以在本申请实施例的指引下,不付出创造性劳动的将本申请实施例迁移到其使用的程序语言,或其采用的序列化结构之上。
基于图1和图2所述的场景,本申请的申请人发现,如何提供一种灵活的以及可扩展的将交换数据和数据序列之间进行转换的方法,成为需要解决的问题。具体到POS终端和Server之间的数据交互场景,如何以更简单、快速且通用的方式将TLV格式的字节序列转换成JavaBean对象,以及如何将JavaBean对象转化为TLV格式的字节序列就成了需要解决的问题。
图3示出了本申请实施例提供的数据处理的方法,应用于上述图1所示的通信系统10中的终端设备110或服务端设备120,实现将数据对象转换到序列化数据,可由所述终端设备110或服务端设备120的软件和/或硬件实现。如图3所示,该方法包括步骤S110至S140。各个步骤的具体实现原理如下:
S110,获取目标对象。
在一种可能的实施方式中,电子设备可以采用全局数据转换器来实现序列化。该全局数据转换器的输入数据为需要进行序列化的目标对象,该全局数据转换器的输出数据为目标对象序列化后的数据。
可以理解的是,该全局数据转换器的输出数据可以是序列化数据构成的数组,也可以是数据流,具体的可以根据实际的业务需求来实现。
在一个具体的示例中,电子设备响应于需要进行交换数据传输的消息,调用全局数据转换器,获取需要进行序列化的目标对象。目标对象可以是JavaBean的实例。全局数据转换器是可以对该目标对象进行序列化转换的程序段,或实现本申请实施例提供的处理步骤的处理单元。
S120,利用反射机制依次获取所述目标对象的每个属性的注解;所述注解包含其对应属性的序列化参数。
反射又称Reflection,以Java语言为例,在Java语言中的反射是在运行时期动态地去获取类中的信息(类的信息,方法信息,构造器信息,字段等信息)。也就是说,反射机制使程序在运行期可以拿到一个对象的所有信息。
以Java语言为例,注解(Annotation)是放在Java源码的类、方法、字段、参数前的一种特殊“注释”,注释会被编译器直接忽略,注解则可以被编译器打包进入class文件,因此,注解是一种用作标注的“元数据”。注解是Java语言用于工具处理的标注,注解可以配置参数。
使用注解修饰了类、方法、变量等成员之后,这些注解不会自己生效。要想获取类、方法或变量的注解信息,须通过Java的反射技术来获取Annotation对象。
在一些实施例中,电子设备的全局数据转换器利用反射机制依次获取所述目标对象的各个属性的注解。
在一个具体的示例中,全局数据转换器针对实例Class clazz=People.class,采用反射机制Field[]fields=clazz.getDeclaredFields(),依次获对象clazz的各个属性的注解。
在本申请的实施例中,目标对象的每个注解中配置了该属性的序列化参数。序列化参数用于指示全局数据转换器或局部数据转换器序列化规则。
在一些具体实施例中,以交换数据为JavaBean对象,序列化数据的结构为TLV结构为例。自定义注解可以包含TlvField和TlvListFiled两种。
自定义注解TlvField中序列化参数可以包含以下参数至少之一:
a)Tag,TLV数据中的标签域;
b)Length,TLV数据中的长度域;
c)PadChar,补齐字节;
d)LeftPad,是否左补齐;
e)DataFormat,日期类型字段的日期格式;
f)Scope,数据转化时是否执行序列化或反序列化;
g)Nested,是否是复杂对象;
h)Phase,自定义是否执行序列化或反序列化的业务请求名称;
i)Handler,自定义的数据转换器的SpringBean,实现局部数据转换器接口类的实例,Spring bean为Spring框架在运行时管理的对象。
自定义注解TLlvListFiled中序列化参数可以包含以下参数至少之一:
a)Tag,TLV数据中的标签域;
b)Size,相同TLV数据段的数量;
c)NestObject,单个TLV数据段对应的JavaBean类型;
d)Phase,自定义是否执行序列化或反序列化的业务请求名称;
e)Scope,数据转化时是否执行序列化或反序列化。
在一些实施例中,自定义的局部数据转换器(TlvTransformHandler)是鉴于不同数据类型和业务需求,其转化的方法是各异的,其主要用于转换复杂属性。在一个具体的示例中,其有两个接口:
a)toBytes(object),将指定的Java对象转换为字节数组;
b)toObject(bytes),将指定的字节数组转化为Java对象。
自定义注解TlvField用于标记JavaBean基本属性或者复杂属性,其对应的是单个TLV数据段;当标记复杂属性时,可配置自定义的布局数据转换器接口TlvTransformHandler,用于处理复杂数据格式的转换(数据格式包含但不限于TLV)。
自定义注解TlvListField用于标记JavaBean属性对应的是一组相同格式的TLV数据段。
在一些实施例中,全局数据转换器(TlvTransformer)利用上述定义的注解和转换器,定义了完整的数据转换流程,实现JavaBean与TLV数据的互相转换。
在一些实施例中,在应用本申请实施例提供的数据处理的方法之前,也就是获取目标对象前,还包括对类型(JavaBean)的属性字段配置注解(Annotation)。
S130,针对所述目标对象的每个属性,基于所述属性对应注解的序列化参数,将所述属性转换为第一序列化数据。
在一些实施例中,全局数据转换器遍历目标对象的每个属性,针对目对象的每个属性进行处理。
在一个具体的示例中,序列化参数包括上述注解中定义的Tag和Length两个参数。全局数据转换器根据Tag为该属性的TLV字节序列的Tag域赋值,根据Length为该属性的TLV字节序列的Length域赋值,并将该属性序列化为字节序列,也就是第一序列化数据,保存在该属性的TLV序列的Value域。
在另一个具体的示例中,序列化参数包括上述的Tag和Handler参数,这里的Handler是局部数据转换器,局部数据转换器是鉴于不同数据类型和业务需求会创设对应的Java对象,针对此类Java对象设计专门的序列化转换器,因只作用于目标对象中的对象属性,因此可以称作局部数据转换器。全局数据转换器根据Tag参数为该属性的TLV序列的Tag域赋值,Handler对该对象属性进行序列化,获得第一序列化数据,保存在该属性的TLV序列的Value域。
Handler的输入为目标对象的属性,输出为该属性对应的字节序列,也就是第一序列化数据。
在一些实施例中,局部数据转换器中可以是根据不同的业务需要,预设将属性进行序列化的规则,局部数据转换器根据此规则对属性进行序列化。
在另一些实施例中,目标对象的属性可以是另一个类的实例,也就是另一对象。可以理解的是,此另一对象中的属性也可以具有注解。Handler可以根据此另一对象中的注解对此另一对象进行序列化转换。其转换的原理与全局数据转换器对目标对象的序列化处理的原理相同。
在又一个具体的示例中,所述注解包含补齐指示参数PadChar或LeftPad至少之一;所述方法还包括:基于所述补齐指示参数,对所述第一序列化数据进行补齐。
例如,注解@TlvField(tag=0x0011,length=7,padChar="X",scope=TlvField.Scope.OUTPUT)中,这里定义了数据长度为7,不足时用指定的字符“X”补足。有的属性序列化的字节数组的长度是定长的,所以不足时需要补齐。本申请实施例通过在注解中加入补齐指示参数,在对具有该注解的属性进行系列化时,根据补齐指示参数进行补齐。
在此示例中还可以看出,此注解包含序列化开关参数Scope。所述方法还包括:通过序列化开关参数确定数据转化时是否执行序列化或反序列化。TlvField.Scope.OUTPUT通过Scope定义该属性只有返回给调用端时,也就是值为OUTPUT情况时才序列化。有的属性只需要在业务处理中使用,但不需要序列化后返回给调用方,反之亦然。本申请实施例通过序列化开关参数来实现否执行序列化或反序列化。
在再一个具体的示例中,注解包含日期格式参数DataFormat;所述方法还包括,根据日期格式参数,对给定日期字符串,按照格式转换为日期对象。日期设置类型,通过属性来设置,例如,dateFormat="yyyyMMddHHmmss"。
从以上以几个具体的示例可以看出,本申请实施例通过注解方式,可实现序列化时的长度补齐、日期格式设置以及是否执行序列化或反序列化。
S140,基于各个属性的所述第一序列化数据,生成所述目标对象对应的第二序列化数据。
在一些实施例中,全局数据转换器将目标对象各个属性的第一序列化数据以预设规则进行组合,例如按属性的顺序进行组合,生成所述目标对象对应的第二序列化数据。在一些具体的示例中,以预设规则进行组合过程中,还可以包括根据协议规则对第一序列化数据进行封装。具体的,第二序列化数据可以是组合了第一序列化数据,并为所述第一序列化数据添加标签域和长度域构成TLV格式数据,例如,TLV格式的字节序列构成的数组,或TLV格式的字节序列的字节流。
应理解,本申请实施例在注解包含目标对象各个属性的序列化参数,并在将目标对象进行序列化前利用反射机制获取各个属性的注解,基于属性对应注解的序列化参数将所述属性转换为第一序列化数据,可以在不需要第三方依赖库的情况下,实现目标对象和序列化数据之间的转换,并且由于注解中配置的序列化参数可以定制和调整,提高了目标对象和序列化数据之间的转换的灵活性。
本申请的具体实施例提供了一种全新的基于Java Annotation及反射机制,实现JavaBean与TLV数据格式的互相转换的技术实现。通过对JavaBean的属性字段配置Annotation,即可实现JavaBean与TLV数据格式的互相转换,无需使用第三方依赖库,并且由于注解中的序列化参数可以定制和调整,提高了目标对象和序列化数据之间的转换的灵活性。
在上述图3所示的数据处理的方法的实施例的基础上,将目标对象的属性划分类简单属性和复杂属性。
简单属性为基于基本数据类型定义的属性,包括但不限于编程语言规范定义的整型数据类型、浮点型数据类型、字符型数据类型和字符串型数据类型等数据类型。
复杂属性为基于自定义对象定义的属性,包括但不限于根据业务需要定义的各种属性。
基于此,步骤S130中的,基于所述属性对应注解的序列化参数,将所述属性转换为第一序列化数据,如图4所示,包括步骤S131至步骤S133:
S131,确定所述属性的属性类型。
在一些实施例中,可以根据所述属性的定义方式确定所述属性的属性类型。
在另一些实施例中,可以根据所述注解中的类型参数确定所述属性的属性类型。
在一些具体的示例中,可以通过注解名称判断其对应属性的类型,还可以在注解中设置标识属性类型的参数来标明属性类型。
在另一些具体的示例中,还可以通过判断只有复杂属性具有的类型参数,例如Handler或NestObject等参数来判断属性的属性类型。
S132,若所述属性类型为简单属性,则根据所述注解中的序列化参数,将所述简单属性直接转换为所述第一序列化数据。
在一些实施例中,全局数据转换器若判断所述属性类型为简单属性,例如整型数据类型或字符串数据类型等由语言规范定义的数据类型,则将简单属性直接转换为所述第一序列化数据。具体的,可以通过编程语言,例如Java,提供的序列化函数将简单属性直接转换为所述第一序列化数据。
在一些具体的示例中,对于简单属性,根据注解中的Tag和Length参数来确定该属性转换为TLV格式的标签域和长度域。
例如,属性private String responseCode的注解@TlvField(tag=0x0088,length=7)定义了转换为TLV字节序列的标签(Tag)“0x0088”和长度(Length)“7”。全局数据转换器据此序列化参数,将responseCode属性转换为长度“7”的字节序列,并根据注解中的“tag”值,将此属性对应的TLV结构的标签域设置为“0x0088”。
S133,若所述属性类型为复杂属性,则调用所述注解中与所述属性对应的局部数据转换器,将所述属性转换为所述第一序列化数据。
在一些实施例中,若所述属性类型为复杂属性,例如根据业务需要定义的类,则调用所述注解中与所述属性对应的局部数据转换器,将所述属性转换为所述第一序列化数据。针对某一具体属性的序列化转换器为局部数据转换器。
在一个具体的示例中,复杂属性private List<CustomizedApplicationInfo>applicationList的注解@TlvField(tag=0x0099,handlerBeanName="bpsCustomizedAppInfoHandler")中包含handlerBeanName="bpsCustomizedAppInfoHandler"参数,该参数用于指示全局数据转换器调用局部数据转换器bpsCustomizedAppInfoHandler将applicationList属性序列化,获得第一序列化数据。
在另一个具体的示例中,复杂属性一组相同类型的数据private List<UpdateFileInfo>updateFileInfoList的注解@TlvListField(tag=0x0077,nestedObject=UpdateFileInfo.class,size=10),则调用嵌套类UpdateFileInfo.class对应的局部数据转换器对updateFileInfoList属性进行序列化转换,获得第一序列化数据。
需要指出的是,在处理复杂属性数据格式的转换时,数据格式包括但不限于TLV格式,也就是说,可以利用局部数据转换器将属性转换为其他因具体业务需求所需要的数据格式的字节序列。
在一些实施例中,调用所述注解中与所述复杂属性对应的序列化转换器,将所述复杂属性转换为所述第一序列化数据,包括:将所述复杂属性作为所述目标对象,调用所述局部数据转换器执行图3所示方法中,从获取目标对象到生成所述目标对象的第二序列化数据的步骤,也就是步骤S110至步骤S140,将所述第二序列化数据作为所述第一序列化数据,所述转换器输出所述第一序列化数据。可以理解的是,本申请实施例不仅可以处理基本属性和复杂属性,还可处理嵌套的复杂属性。
可以理解的是,本身申请实施例通过注解方式可以实现对语言定义的基本属性和用于自定义复杂属性的数据转换。另外通过注解方式,为复杂属性指定自定义局部数据转换器,实现JavaBean与其他数据格式的互相转化。
为了更好的理解本申请的实施例,作为示例而非限定,图5示出了本申请的一种具体的实施方式,以方便理解本申请实施例提供的反序列化数据处理方法。
JavaBean对象转化为TLV数据的过程:
1.定义注解(Annotation),Annotation用于标记该JavaBean对象的属性以及对应Tag-Length的信息。如果是复杂对象,则还需要给出复杂对象的类的信息。
2.用步骤1中定义的Annotation标记待转换的对象的属性。
3.调用全局数据转换器(TlvTransformer)执行将指定的JavaBean转换为TLV字节数组。
4.TlvTransformer在接收到JavaBean对象的时候利用反射机制,依次读取属性的TLV相关注解信息(若有)。
5.对于简单属性(如数字,字符串等),则直接序列化获得TLV字节序列的Value的信息。如果是复杂属性,则调用该属性相应的局部数据转换器将其转换为TLV或其他格式的数据作为Value信息。
图6示出了本申请实施例提供的数据处理的方法,应用于上述图1所示的通信系统10中的终端设备110或服务端设备120,实现数据序列到数据对象的反序列化转换,可由所述终端设备110或服务端设备120的软件和/或硬件实现。如图6所示,该方法包括步骤S210至S250。各个步骤的具体实现原理如下:
S210,获取目标序列化数据。
在一种可能的实施方式中,电子设备仍可以采用上述实施例提供的全局数据转换器来实现反序列化。该全局数据转换器的输入数据为需要进行反序列化处理的目标序列化数据,该全局数据转换器的输出数据为目标序列化数据对应的目标对象。
可以理解的是,也可以采用单独的用于反序列化的全局数据转换器来实现,其实现原理与本申请各个实施例的原理相同。
在一个具体的示例中,电子设备响应于需要进行交换数据传输的消息,调用全局数据转换器,获取需要进行反序列化的目标序列化数据。
目标序列化数据可以是结构为TLV(Tag-Length-Value)结构的数据。也可以是其他结构的字节序列。
全局数据转换器是可以对该目标序列化数据进行反序列化转换的程序段,或实现本申请实施例提供的处理步骤的处理单元。
S220,解析所述目标序列化数据,生成标识净荷映射表;所述标识净荷映射表包含目标对象的每个属性的标识,和所述属性的第一序列化数据之间的对应关系;所述目标对象为所述目标序列化数据对应的对象。
在一些实施例中,电子设备对目标序列化数据进行解析,提取目标序列化数据中的净荷数据,以及净荷数据对应的标识,将净荷的标识和净荷的对应关系净荷映射表。净荷一般指通信协议的信元中,除去信头的纯信息部分。本申请的实施例中,净荷为目标对象的属性转换得到的第一序列化数据。在TLV格式中,标识为Tag域的值,净荷为Value域的值。
在一些具体的示例中,净荷映射表可以是键值对构成的数据表。在一些具体的示例中,将净荷的标识和净荷按目标序列化数据的顺序保存在标识净荷映射表中。在另一个具体的示例中,也可将净荷的标识和净荷指针保存在标识净荷映射表中。
在一个具体的示例中,电子设备在接收到TLV数据流后,将数据流转换成TLV容器对象,TLV容器对象内部维护了Tag-Value的映射表。TLV数据格式定义由Tag-Length-Value组成,解析TLV数据后的映射关系即获得Tag与Value的映射关系。其中Tag对应于目标对象各个属性的标识,Value对应各个属性的第一序列化数据。
S230,利用反射机制构造目标对象,并依次获取所述目标对象的各个属性的注解。
可以理解的是,目标对象的类型可以通过几种不同的方式来确定。
在一些实施例中,目标对象的类型可以通过预先指定的方式确定。
在另一些实施例中,目标对象的类型也可以通过业务处理流程中的相关参数确定,例如,可以根据接收到的消息类型确定;又例如,可以根据序列化ID,如java中的serialVersionUID来确定;再例如,可以通过业务流程来确定当前需要解析的目标序列化数据对应的类型;又再例如,可以通过TLV数据流中携带的对应类型标识信息来确定。
在一个具体的示例中,电子设备中的全局数据转换器,在确定目标对象的类型后,可以利用反射机制构造目标对象的实例,即目标对象,并依次获取所述目标对象的各个属性的注解。
S240,针对目标对象的每个属性,基于所述属性对应注解中的标识,利用所述标识净荷映射表获得所述属性的净荷,反序列化所述净荷获得所述属性的值,并利用反射机制为所述属性赋值。
在一些实施例中,注解中的标识可以是上述注解参数的Tag参数。由于标识净荷映射表中保存了Tag与Value的映射关系,因此,电子设备的全局数据转换器可以针对目标对象的每个属性,基于所述属性对应注解中的标识,在标识净荷映射表中检索该属性的净荷。在获得该属性的净荷后,反序列化所述净荷获得所述属性的值,并利用反射机制为所述属性赋值。
对应于上述图3所示实施例中的一些具体的实施方式,反序列化所述净荷获得所述属性的值时,可以根据注解中的参数,对补齐后的净荷进行去补齐操作。根据注解中的日期格式参数对净荷进行反序列化操作。根据序列化开关参数确定是否需要对净荷进行反序列化操作。
S250,输出每个属性均赋值后的所述目标对象。
在一些实施中,在每个属性均赋值后,全局数据转换器输出目标对象。完成将目标序列化数据转换为目标对象的反序列化操作。
应理解,在图6所示的实施例中,由于预先解析了目标序列化数据,生成标识净荷映射表,并基于注解中的标识利用所述标识净荷映射表获得所述属性的净荷,避免了在程序运行时反复查询目标序列化数据造成的运行效率比较低的问题。
在上述图6所示的数据处理的方法的实施例的基础上,将目标对象的属性划分类简单属性和复杂属性。
简单属性为基于基本数据类型定义的属性,包括但不限于编程语言规范定义的整型数据类型、浮点性数据类型、字符型数据类型和字符串型数据类型等数据类型。
复杂属性为基于自定义对象定义的属性,包括但不限于根据业务需要定义的各种属性。
步骤S240中的,反序列化所述净荷获得所述属性的值,并利用反射机制为所述属性赋值,如图7所示,包括步骤S241至步骤243:
S241,确定所述属性的属性类型。
在一些实施例中,可以根据所述属性的定义方式确定所述属性的属性类型。在另一些实施例中,可以根据所述注解中的类型参数确定所述属性的属性类型。
在一些具体的示例中,可以通过注解名称判断其对应属性的类型,还可以在注解中设置标识属性类型的参数来标明属性类型。
在另一些具体的示例中,还可以通过判断只有复杂属性具有的类型参数,例如Handler或NestObject等参数来判断属性的属性类型。
S242,若所述属性类型为简单属性,则将所述净荷直接进行反序列化获得所述简单属性的值,并利用反射机制为所述属性赋值。
在一些实施例中,全局数据转换器若判断所述属性类型为简单属性,如整型数据类型或字符串数据类型等由语言规范定义的数据类型,则可以将净荷,例如该属性对应的TLV格式中Value,直接进行反序列化转换,获得该属性的值。
在一些具体的示例中,直接进行反序列化转换可以采用编程语言,例如Java,提供的反序列化函数来进行转换,将所述净荷直接进行反序列化获得所述简单属性的值。全局数据转换器在获得属性的值后,利用反射机制为所述属性赋值。
S243,若所述属性类型为复杂属性,则调用所述属性对应的局部数据转换器,将所述净荷进行反序列化获得所述属性的值,并利用反射机制为所述属性赋值。
在一些实施例中,若所述属性类型为复杂属性,例如根据业务需要用户自定义的属性,则调用所述注解中与所述属性对应的局部数据转换器,对所述净荷进行反序列化获得所述属性的值。局部数据转换器为作用于属性的转换器。
在一些具体的示例中,局部数据转换器预设转换规则将净荷进行反序列化获得所述属性的值。在一些情况下,即便目标序列化数据为TLV字节序列,但其,Value域内的值可以为非TLV字节序列,可以通过局部数据转换器,根据预设的规则,将其转换为目标对象的属性。可以理解的是,对应于不同的业务需求,可以为该业务需求定制对应的序列化规则,并通过局部数据转换器根据该预设规则实现序列化和反序列化的转换。
在一些实施例中,如图8所示,TLV数据流是嵌套的结构,又称复合数据元结构。也就是说,TLV数据中包含Tag域、Length域和Value域数据,其中的一个或多个Value域中的序列化数据本身是另一对象的序列化数据,也就是是另一对象的TLV数据。
针对此种情况,本申请提供的一实施例中,调用所述属性对应的局部数据转换器,将所述净荷进行反序列化获得所述属性的值,并利用反射机制为所述属性赋值,包括:
将所述净荷作为所述目标序列化数据,所述反序列化转换器执如图6所示的所述方法中,从获取目标序列化数据到所述输出每个属性均赋值后的所述目标对象的步骤,也就是步骤S210至步骤S250,将所述目标对象作为所述属性的值,并利用反射机制为所述属性赋值。
应理解,此种实施方式可以为JavaBean属性指定自定义数据转换器,可以实现JavaBean与其他数据格式的互相转化,并且还可以实现对嵌套的序列化数据进行转化。
为了更好的理解本申请的实施例,作为示例而非限定,图9示出了本申请的一种具体的实施方式,以方便理解本申请实施例提供的反序列化数据处理方法。
TLV转化为JavaBean数据的过程:
1.服务端接到TLV数据流后,通过解析器转换成TLV容器(TLVBox)对象,TLVBox对象内部维护了Tag-Value的映射表。
2.调用全局数据转换器TlvTransformer执行将TLV字节序列数据转换为指定类型的JavaBean对象。
3.根据指定Class类型,通过反射的技术构造该JavaBean实例,并依次读取属性的TLV相关Annotation信息(若有)。
4.根据Annotation中的Tag信息从TLVBox维护的Tag-Value的映射表中获得对应的Value。
5.对于简单对象(如数字,字符串等),则直接反序列化并利用反射的方式给对应属性赋值。对于复杂对象重复上述过程1至5完成实例化,然后用反射的方式给对应属性赋值。
6.将所有用TlvField或TlvListField标记的属性经过步骤4,5后,输出JavaBean实例对象,完成转换。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上述图3所示的数据处理的方法,图10示出的是本申请实施例提供的一种数据处理的装置M100,包括:
目标对象获取模块M110,用于获取目标对象。
属性注解获取模块M120,用于利用反射机制依次获取所述目标对象的每个属性的注解;所述注解包含其对应属性的序列化参数。
第一序列化模块M130,用于针对所述目标对象的每个属性,基于所述属性对应注解的指示参数,将所述属性转换为第一序列化数据。
第二序列化模块M140,用于基于各个属性的所述第一序列化数据,生成所述目标对象的第二序列化数据。
可选的,所述第一序列化模块,包括:属性类型确定模块,用于确定所述属性的属性类型。简单属性序列化模块,用于若所述属性类型为简单属性,则根据所述注解中的序列化参数,将所述简单属性直接转换为所述第一序列化数据。复杂属性序列化模块,用于若所述属性类型为复杂属性,则调用所述注解中与所述属性对应的序列化转换器,将所述属性转换为所述第一序列化数据。所述简单属性为基于基本数据类型定义的属性,所述复杂属性为基于自定义对象定义的属性。
可选的,复杂属性序列化模块,包括:
复杂属性嵌套处理模块,用于将所述复杂属性作为所述目标对象,调用所述转换器实现图9所述装置中,从获取目标对象到生成所述目标对象的第二序列化数据的模块,将所述第二序列化数据作为所述第一序列化数据,所述转换器输出所述第一序列化数据。
对应于上述图6所示的数据处理的方法,图11示出的是本申请实施例提供的一种数据处理的装置M200,包括:
序列化数据获取模块M210,用于获取目标序列化数据。
标识净荷列表生成模块M220,用于解析所述目标序列化数据,生成标识净荷映射表;所述标识净荷映射表包含目标对象的每个属性的标识,和所述属性的第一序列化数据之间的对应关系;所述目标对象为所述目标序列化数据对应的对象;
属性注解获取模块M230,用于利用反射机制构造目标对象,并依次获取所述目标对象的各个属性的注解;
属性赋值模块M240,用于针对目标对象的每个属性,基于所述属性对应注解中的标识,利用所述标识净荷映射表获得所述属性的净荷,反序列化所述净荷获得所述属性的值,并利用反射机制为所述属性赋值;
目标对象输出模块M250,用于输出每个属性均赋值后的所述目标对象。
可选的,属性赋值模块,包括:属性类型模块,用于确定所述属性的属性类型。简单属性反序列化模块,用于若所述属性类型为简单属性,则将所述净荷直接进行反序列化获得所述简单属性的值,并利用反射机制为所述属性赋值。复杂属性反序列化模块,用于若所述属性类型为复杂属性,则调用所述属性对应的反序列化转换器,将所述净荷进行反序列化获得所述属性的值,并利用反射机制为所述属性赋值。所述简单属性为基于基本数据类型定义的属性,所述复杂属性为基于自定义对象定义的属性。
可选的,复杂属性反序列化模块,包括:将所述净荷作为所述目标序列化数据,所述反序列化转换器实现图6所述装置中,从获取目标序列化数据到所述输出每个属性均赋值后的所述目标对象的步骤,将所述目标对象作为所述属性的值,并利用反射机制为所述属性赋值。
可以理解的是,以上实施例中的各种实施方式和实施方式组合及其有益效果同样适用于本实施例,这里不再赘述。
图12为本申请一实施例提供的电子设备的结构示意图。如图12所示,该实施例的电子设备D10包括:至少一个处理器D100(图12中仅示出一个)处理器、存储器D101以及存储在所述存储器D101中并可在所述至少一个处理器D100上运行的计算机程序D102,所述处理器D100执行所述计算机程序D102时实现上述任意各个方法实施例中的步骤。
所述电子设备D10可以是POS终端、桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该电子设备可包括,但不仅限于,处理器D100、存储器D101。本领域技术人员可以理解,图12仅仅是电子设备D10的举例,并不构成对电子设备D10的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器D100可以是中央处理单元(Central Processing Unit,CPU),该处理器D100还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器D101在一些实施例中可以是所述电子设备D10的内部存储单元,例如电子设备D10的硬盘或内存。所述存储器D101在另一些实施例中也可以是所述电子设备D10的外部存储设备,例如所述电子设备D10上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器D101还可以既包括所述电子设备D10的内部存储单元也包括外部存储设备。所述存储器D101用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器D101还可以用于暂时地存储已经输出或者将要输出的数据。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行时可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据处理的方法,其特征在于,包括:
获取目标对象;
利用反射机制依次获取所述目标对象的每个属性的注解;所述注解包含其对应属性的序列化参数;
针对所述目标对象的每个属性,基于所述属性对应注解的序列化参数,将所述属性转换为第一序列化数据;
基于各个属性的所述第一序列化数据,输出所述目标对象对应的第二序列化数据。
2.如权利要求1所述的方法,其特征在于,基于所述属性对应注解的序列化参数,将所述属性转换为第一序列化数据,包括:
确定所述属性的属性类型;
若所述属性类型为简单属性,则基于所述注解中的序列化参数,将所述简单属性直接转换为所述第一序列化数据;
若所述属性类型为复杂属性,则调用所述注解中与所述属性对应的局部数据转换器,将所述属性转换为所述第一序列化数据;
所述简单属性为基于基本数据类型定义的属性,所述复杂属性为基于自定义对象定义的属性。
3.如权利要求2所述的方法,其特征在于,调用所述注解中与所述属性对应的序列化转换器,将所述属性转换为所述第一序列化数据,包括:
将所述复杂属性作为所述目标对象,调用所述局部数据转换器执行权利要求1所述方法中,从获取目标对象到生成所述目标对象的第二序列化数据的步骤,将所述第二序列化数据作为所述第一序列化数据,所述局部数据转换器输出所述第一序列化数据。
4.一种数据处理的方法,其特征在于,包括:
获取目标序列化数据;
解析所述目标序列化数据,生成标识净荷映射表;所述标识净荷映射表包含目标对象的每个属性的标识,和所述属性的第一序列化数据之间的对应关系;所述目标对象为所述目标序列化数据对应的对象;
利用反射机制构造目标对象,并依次获取所述目标对象的各个属性的注解;
针对目标对象的每个属性,基于所述属性对应注解中的标识,利用所述标识净荷映射表获得所述属性的净荷,反序列化所述净荷获得所述属性的值,并利用反射机制为所述属性赋值;
输出每个属性均赋值后的所述目标对象。
5.如权利要求4所述的方法,其特征在于,反序列化所述净荷获得所述属性的值,并利用反射机制为所述属性赋值,包括:
确定所述属性的属性类型;
若所述属性类型为简单属性,则将所述净荷直接进行反序列化获得所述简单属性的值,并利用反射机制为所述属性赋值;
若所述属性类型为复杂属性,则调用所述属性对应的局部数据转换器,将所述净荷进行反序列化获得所述属性的值,并利用反射机制为所述属性赋值;
所述简单属性为基于基本数据类型定义的属性,所述复杂属性为基于自定义对象定义的属性。
6.如权利要求4所述的方法,其特征在于,调用所述属性对应的局部反序列化转换器,将所述净荷进行反序列化获得所述属性的值,并利用反射机制为所述属性赋值,包括:
将所述净荷作为所述目标序列化数据,所述局部反序列化转换器执行权利要求4所述方法中,从获取目标序列化数据到所述输出每个属性均赋值后的所述目标对象的步骤,将所述目标对象作为所述属性的值,并利用反射机制为所述属性赋值。
7.一种数据处理的装置,其特征在于,包括:
目标对象获取模块,用于获取目标对象;
属性注解获取模块,用于利用反射机制依次获取所述目标对象的每个属性的注解;所述注解包含其对应属性的序列化参数;
第一序列化模块,用于针对所述目标对象的每个属性,基于所述属性对应注解的指示参数,将所述属性转换为第一序列化数据;
第二序列化模块,用于基于各个属性的所述第一序列化数据,生成所述目标对象的第二序列化数据。
8.一种数据处理的装置,其特征在于,包括:
序列化数据获取模块,用于获取目标序列化数据;
标识净荷列表生成模块,用于解析所述目标序列化数据,生成标识净荷映射表;所述标识净荷映射表包含目标对象的每个属性的标识,和所述属性的第一序列化数据之间的对应关系;所述目标对象为所述目标序列化数据对应的对象;
属性注解获取模块,用于利用反射机制构造目标对象,并依次获取所述目标对象的各个属性的注解;
属性赋值模块,用于针对目标对象的每个属性,基于所述属性对应注解中的标识,利用所述标识净荷映射表获得所述属性的净荷,反序列化所述净荷获得所述属性的值,并利用反射机制为所述属性赋值;
目标对象输出模块,用于输出每个属性均赋值后的所述目标对象。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并能够在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至3任一项,或4至6任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3任一项,或4至6任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111656683.2A CN114331416A (zh) | 2021-12-30 | 2021-12-30 | 数据处理的方法、装置、电子设备及存储介质 |
PCT/CN2022/125978 WO2023124425A1 (zh) | 2021-12-30 | 2022-10-18 | 数据处理的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111656683.2A CN114331416A (zh) | 2021-12-30 | 2021-12-30 | 数据处理的方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114331416A true CN114331416A (zh) | 2022-04-12 |
Family
ID=81019302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111656683.2A Pending CN114331416A (zh) | 2021-12-30 | 2021-12-30 | 数据处理的方法、装置、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114331416A (zh) |
WO (1) | WO2023124425A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115589440A (zh) * | 2022-12-12 | 2023-01-10 | 北京沐融信息科技股份有限公司 | 一种报文注解配置方法、组包方法及解析方法 |
CN116301666A (zh) * | 2023-05-17 | 2023-06-23 | 杭州数云信息技术有限公司 | Java对象序列化方法及其反序列化方法及装置、终端 |
WO2023124425A1 (zh) * | 2021-12-30 | 2023-07-06 | 深圳市兆珑科技有限公司 | 数据处理的方法、装置、电子设备及存储介质 |
CN116405557A (zh) * | 2023-03-14 | 2023-07-07 | 中科南京移动通信与计算创新研究院 | 基于注解的数据反序列化以及序列化方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040220946A1 (en) * | 2003-05-01 | 2004-11-04 | Oracle International Corporation | Techniques for transferring a serialized image of XML data |
CN102981884A (zh) * | 2012-11-22 | 2013-03-20 | 用友软件股份有限公司 | 序列化装置和序列化方法 |
CN103745010A (zh) * | 2014-01-28 | 2014-04-23 | 北京京东尚科信息技术有限公司 | 一种基于csv文件确定对象属性值的方法和装置 |
CN106648569A (zh) * | 2015-11-02 | 2017-05-10 | 腾讯科技(深圳)有限公司 | 目标序列化实现方法和装置 |
CN106775696A (zh) * | 2016-12-08 | 2017-05-31 | 蓝信工场(北京)科技有限公司 | 数据处理方法及装置 |
CN107992624A (zh) * | 2017-12-22 | 2018-05-04 | 百度在线网络技术(北京)有限公司 | 解析序列化数据的方法、装置、存储介质及终端设备 |
CN109871519A (zh) * | 2019-02-18 | 2019-06-11 | 北京思特奇信息技术股份有限公司 | 一种无层级结构的json反序列化方法、装置及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120246551A1 (en) * | 2011-03-21 | 2012-09-27 | Ncr Corporation | Updating serialized objects |
CN110941655B (zh) * | 2018-09-21 | 2023-04-28 | 中移(杭州)信息技术有限公司 | 一种数据格式转换方法及装置 |
CN114331416A (zh) * | 2021-12-30 | 2022-04-12 | 深圳市兆珑科技有限公司 | 数据处理的方法、装置、电子设备及存储介质 |
-
2021
- 2021-12-30 CN CN202111656683.2A patent/CN114331416A/zh active Pending
-
2022
- 2022-10-18 WO PCT/CN2022/125978 patent/WO2023124425A1/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040220946A1 (en) * | 2003-05-01 | 2004-11-04 | Oracle International Corporation | Techniques for transferring a serialized image of XML data |
CN102981884A (zh) * | 2012-11-22 | 2013-03-20 | 用友软件股份有限公司 | 序列化装置和序列化方法 |
CN103745010A (zh) * | 2014-01-28 | 2014-04-23 | 北京京东尚科信息技术有限公司 | 一种基于csv文件确定对象属性值的方法和装置 |
CN106648569A (zh) * | 2015-11-02 | 2017-05-10 | 腾讯科技(深圳)有限公司 | 目标序列化实现方法和装置 |
CN106775696A (zh) * | 2016-12-08 | 2017-05-31 | 蓝信工场(北京)科技有限公司 | 数据处理方法及装置 |
CN107992624A (zh) * | 2017-12-22 | 2018-05-04 | 百度在线网络技术(北京)有限公司 | 解析序列化数据的方法、装置、存储介质及终端设备 |
CN109871519A (zh) * | 2019-02-18 | 2019-06-11 | 北京思特奇信息技术股份有限公司 | 一种无层级结构的json反序列化方法、装置及存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023124425A1 (zh) * | 2021-12-30 | 2023-07-06 | 深圳市兆珑科技有限公司 | 数据处理的方法、装置、电子设备及存储介质 |
CN115589440A (zh) * | 2022-12-12 | 2023-01-10 | 北京沐融信息科技股份有限公司 | 一种报文注解配置方法、组包方法及解析方法 |
CN116405557A (zh) * | 2023-03-14 | 2023-07-07 | 中科南京移动通信与计算创新研究院 | 基于注解的数据反序列化以及序列化方法 |
CN116301666A (zh) * | 2023-05-17 | 2023-06-23 | 杭州数云信息技术有限公司 | Java对象序列化方法及其反序列化方法及装置、终端 |
CN116301666B (zh) * | 2023-05-17 | 2023-10-10 | 杭州数云信息技术有限公司 | Java对象序列化方法及其反序列化方法及装置、终端 |
Also Published As
Publication number | Publication date |
---|---|
WO2023124425A1 (zh) | 2023-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114331416A (zh) | 数据处理的方法、装置、电子设备及存储介质 | |
CN106970820B (zh) | 代码存储方法及代码存储装置 | |
CN111428462A (zh) | 通讯协议模板构建的方法及终端设备 | |
CN103294652B (zh) | 一种数据转换方法及系统 | |
CN111552838B (zh) | 数据处理方法及装置、计算机设备、存储介质 | |
CN107547574B (zh) | 一种基于通用协议的通信系统及方法 | |
KR20070116893A (ko) | 복수의 네트워크 엘리먼트 사이의 정보 통신 | |
CN110597814B (zh) | 结构化数据的序列化、反序列化方法以及装置 | |
CN109460220A (zh) | 报文预定义代码生成方法、装置、电子设备和存储介质 | |
CN111124551A (zh) | 数据序列化、数据反序列化方法、装置和计算机设备 | |
CN110769002A (zh) | 基于LabVIEW的报文解析方法、系统、电子设备和介质 | |
CN112631649A (zh) | 智能合约管理方法、装置、终端设备及介质 | |
CN114564509A (zh) | 序列化方法、反序列化方法、设备、芯片以及介质 | |
CN114428728A (zh) | 信息物理测试协议处理系统及方法 | |
CN110830427A (zh) | 一种netty环境下的消息编码、消息解码的方法和装置 | |
KR20150080997A (ko) | 마크업 언어(Markup Language)를 이용한 다중 전술데이터링크 메시지 처리 방법 | |
CN115328679A (zh) | 异构函数库的自动化集成方法、计算设备及其系统 | |
CN115695589A (zh) | 一种自动生成can报文解析代码的方法、系统、装置及介质 | |
US20050091405A1 (en) | Method and system for using multiple data type representations to deliver data objects to components in a distributed system | |
CN115048108A (zh) | 一种代码自动生成的方法、系统、设备及存储介质 | |
CN115623070B (zh) | Idl消息的处理方法、装置、电子设备、存储介质 | |
CN113949438B (zh) | 一种无人机通讯方法、装置、设备及存储介质 | |
CN117093288B (zh) | 基于前后台通信的数据双向映射方法及装置 | |
CN116016296B (zh) | 一种基于json的二进制数据处理方法、系统及设备 | |
CN116882366B (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 |