CN114385128A - 数据处理方法、设备、装置、存储介质及程序产品 - Google Patents
数据处理方法、设备、装置、存储介质及程序产品 Download PDFInfo
- Publication number
- CN114385128A CN114385128A CN202111486619.4A CN202111486619A CN114385128A CN 114385128 A CN114385128 A CN 114385128A CN 202111486619 A CN202111486619 A CN 202111486619A CN 114385128 A CN114385128 A CN 114385128A
- Authority
- CN
- China
- Prior art keywords
- type
- field
- message
- class object
- data type
- 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
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/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本申请提出一种数据处理方法、设备、装置、存储介质及程序产品,针对待转换的消息或类对象,根据消息与类对象的数据类型对应关系,将待转换的消息或类对象的字段以及字段的内容和类型分别进行转换,得到对应的字段转化信息、内容转化信息以及类型转化信息,可以得到待转换的消息与类对象对应的转换目标对象。通过这种方式,实现将具有预设消息格式的消息转换成预设编程语言程序中的类对象进行相互转换,以将Java类对象转换成Protobuf消息为例,开发人员在编写Java程序时,只需编写实现指定功能的Java类对象,无需编写用于转换Java类对象到Protobuf消息的功能代码,大大降低了开发人员的工作量以及代码的冗余。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、设备、装置、存储介质及程序产品。
背景技术
GRPC由google开发的一款跨语言、跨平台、开源的远程过程调用系统,是面向移动和HTTP/2设计的高性能、开源和通用的远程过程调用(Remote Procedure Call,RPC)框架,其提供有不同的语言版本,例如,C、Java和Go语言等。在GRPC中,客户端应用可以像调用本地对象一样直接调用不同机器上的服务端应用的方法,基于此,在开发GRPC服务时,需指定其能够被远程调用的方法以及方法的参数和返回值类型。
在客户端应用与服务端应用进行数据交互过程中,GRPC对数据进行编解码使用的是Google开发的数据传输格式协议(Google Protocol Buffers,Protobuf)。以Java语言开发环境为例,服务端可以实现GRPC服务的接口并定义Protobuf的消息格式,以在处理客户端的调用请求时将Java类对象转换成GRPC能够识别的Protobuf消息。在客户端定义一个像服务端一样的方法存根,该方法存根可以根据Protobuf的消息格式将服务端返回的Protobuf消息转换为客户端能够执行的Java程序。
实际上,Protobuf消息与其对应的Java类对象是以不同形式实现相同的功能,在开发GRPC服务时,为了实现Java类对象与Protobuf的消息之间的转换,既要定义Protobuf的消息格式,又要编写与Protobuf消息对应的Java类对象,对于开发人员来说,编码工作繁重。
发明内容
本申请提供一种数据处理方法、设备、装置、存储介质及程序产品,以至少减少开发人员在开发GRPC服务时的编码工作量,降低开发成本。
本申请实施例提供一种数据处理方法,所述方法包括:获取待转换对象;所述待转换对象包括消息或预设编程语言程序中的类对象;根据所述消息与所述类对象的数据类型对应关系,对所述待转换对象的字段及所述字段对应的内容和所述字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息;根据所述字段转化信息、内容转化信息和类型转化信息得到所述待转换对象对应的转换目标对象;其中,所述待转换对象包括所述预设编程语言程序中的类对象时,所述转换目标对象包括所述消息;所述待转换对象包括所述消息时,所述转换目标对象包括所述预设编程语言程序中的类对象。
在一可选实施例中,所述待转换对象包括所述预设编程语言程序中的类对象,所述方法还包括:对所述类对象进行解析,得到所述类对象的详情信息;所述详情信息包括所述类对象的字段及所述字段对应的内容和所述字段对应的类型。
在一可选实施例中,所述类对象的详情信息还包括字段对应的注释信息,所述方法还包括:将所述类对象的字段对应的注释信息,作为所述转换目标对象中相应字段对应的注释信息。
在一可选实施例中,根据所述消息与所述类对象的数据类型对应关系,对所述待转换对象的字段及所述字段对应的内容和所述字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息,包括:调用目标插件,以使所述目标插件根据所述数据类型对应关系,将所述类对象中字段对应的类型转换为所述消息的消息格式适配的数据类型,得到所述类型转化信息,以及将所述字段及所述字段对应的内容分别转换为所述消息的字段及字段对应的内容,得到所述字段转化信息和内容转化信息。
在一可选实施例中,所述调用目标插件包括:根据所述字段及所述字段的内容、数量和类型,生成所述目标插件可识别的目标文件;响应于插件选择操作,将所述目标文件传递给所述目标插件。
在一可选实施例中,所述方法还包括:若所述类对象的字段命名方式与所述消息格式对应的字段命名方式不同,则按照所述消息格式对应的命名方式对所述类对象转换后的字段进行调整。
在一可选实施例中,所述预设编程语言包括Java编程语言,所述类对象包括Java类对象,所述消息包括Protobuf消息;所述根据所述数据类型对应关系,将所述类对象中字段对应的类型转换为所述消息的消息格式适配的数据类型,包括:根据Protobuf消息格式和Java编程语言的语法规则,确定所述Protobuf消息与所述Java类对象的数据类型对应关系;根据所述数据类型对应关系,确定Protobuf消息中与所述Java类对象中字段的类型对应的目标数据类型;将所述Java类对象中字段的类型转换为所述Protobuf消息对应的目标数据类型,作为所述Protobuf消息格式适配的数据类型。
在一可选实施例中,所述确定Protobuf消息中与所述Java类对象中字段的类型对应的目标数据类型,包括:若所述Java类对象中字段的类型为Java编程语言的基本数据类型或所述基本数据类型对应的封装类型,则确定所述Protobuf消息格式中与所述字段的类型具有相同数据结构的基本数据类型为所述目标数据类型;若所述Java类对象中字段的类型为Java编程语言的类对象类型,则确定所述Protobuf消息格式中的消息体类型为所述目标数据类型;若所述Java类对象中字段的类型为Java编程语言的集合类型,则确定所述Protobuf消息格式中与所述字段的类型具有相同数据结构的集合类型为所述目标数据类型;若所述Java类对象中字段的类型为Java编程语言的字符串或字符数组类型,则确定所述Protobuf消息格式中与所述字段的类型具有相同数据结构的数据类型为所述目标数据类型。
在一可选实施例中,所述确定所述Protobuf消息格式中与所述字段的类型具有相同数据结构的集合类型为所述目标数据类型之后,还包括:针对所述集合类型字段中的每个集合字段元素,根据所述Protobuf消息与所述Java类对象的数据类型对应关系,将所述每个集合字段元素对应的类型转换为所述Protobuf消息格式适配的数据类型,以及将所述每个集合字段元素及所述每个集合字段元素对应的内容分别转换为所述目标数据类型中的每个集合字段元素及每个集合字段元素对应的内容。
在一可选实施例中,所述方法还包括:调用复制粘贴管理器将所述内容转化信息和类型转化信息复制并粘贴到剪切板;响应于对所述内容转化信息和类型转化信息的粘贴操作,将所述剪切板上的所述内容转化信息和类型转化信息粘贴到对应的存储对象,得到所述转换目标对象。
本申请实施例还提供一种数据处理设备,包括:处理器以及存储有计算机程序的存储器;所述处理器,用于执行所述计算机程序,以用于:获取待转换对象;所述待转换对象包括消息或预设编程语言程序中的类对象;根据所述消息与所述类对象的数据类型对应关系,对所述待转换对象的字段及所述字段对应的内容和所述字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息;根据所述字段转化信息、内容转化信息和类型转化信息得到所述待转换对象对应的转换目标对象;其中,所述待转换对象包括所述预设编程语言程序中的类对象时,所述转换目标对象包括所述消息;所述待转换对象包括所述消息时,所述转换目标对象包括所述预设编程语言程序中的类对象。
在一可选实施例中,待转换对象包括预设编程语言程序中的类对象,处理器还用于:对类对象进行解析,得到类对象的详情信息;详情信息包括类对象的字段及字段对应的内容和字段对应的类型。
在一可选实施例中,类对象的详情信息还包括字段对应的注释信息,处理器还用于:将类对象的字段对应的注释信息,作为转换目标对象中相应字段对应的注释信息。
在一可选实施例中,处理器在根据消息与类对象的数据类型对应关系,对待转换对象的字段及字段对应的内容和字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息时,用于:调用目标插件,以使目标插件根据数据类型对应关系,将类对象中字段对应的类型转换为消息的消息格式适配的数据类型,得到类型转化信息,以及将字段及字段对应的内容分别转换为消息的字段及字段对应的内容,得到字段转化信息和内容转化信息。
在一可选实施例中,处理器在调用目标插件时,用于:根据字段及字段的内容、数量和类型,生成目标插件可识别的目标文件;响应于插件选择操作,将目标文件传递给目标插件。
在一可选实施例中,处理器还用于:若类对象的字段命名方式与消息格式对应的字段命名方式不同,则按照消息格式对应的命名方式对类对象转换后的字段进行调整。
在一可选实施例中,预设编程语言包括Java编程语言,类对象包括Java类对象,消息包括Protobuf消息;处理器在根据数据类型对应关系,将类对象中字段对应的类型转换为消息的消息格式适配的数据类型时,用于:根据Protobuf消息格式和Java编程语言的语法规则,确定Protobuf消息与Java类对象的数据类型对应关系;根据数据类型对应关系,确定Protobuf消息中与Java类对象中字段的类型对应的目标数据类型;将Java类对象中字段的类型转换为Protobuf消息对应的目标数据类型,作为Protobuf消息格式适配的数据类型。
在一可选实施例中,处理器在确定Protobuf消息中与Java类对象中字段的类型对应的目标数据类型时,用于:若Java类对象中字段的类型为Java编程语言的基本数据类型或基本数据类型对应的封装类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的基本数据类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的类对象类型,则确定Protobuf消息格式中的消息体类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的集合类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的集合类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的字符串或字符数组类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的数据类型为目标数据类型。
在一可选实施例中,处理器在确定Protobuf消息格式中与字段的类型具有相同数据结构的集合类型为目标数据类型之后,还用于:针对集合类型字段中的每个集合字段元素,根据Protobuf消息与Java类对象的数据类型对应关系,将每个集合字段元素对应的类型转换为Protobuf消息格式适配的数据类型,以及将每个集合字段元素及每个集合字段元素对应的内容分别转换为目标数据类型中的每个集合字段元素及每个集合字段元素对应的内容。
在一可选实施例中,处理器还用于:调用复制粘贴管理器将内容转化信息和类型转化信息复制并粘贴到剪切板;响应于对内容转化信息和类型转化信息的粘贴操作,将剪切板上的内容转化信息和类型转化信息粘贴到对应的存储对象,得到转换目标对象。
本申请实施例还提供一种数据处理装置,包括:获取模块、第一处理模块和第二处理模块;所述获取模块,获取待转换对象;所述待转换对象包括消息或预设编程语言程序中的类对象;所述第一处理模块,用于根据所述消息与所述类对象的数据类型对应关系,对所述待转换对象的字段及所述字段对应的内容和所述字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息;所述第二处理模块,用于根据所述字段转化信息、内容转化信息和类型转化信息得到所述待转换对象对应的转换目标对象;其中,所述待转换对象包括所述预设编程语言程序中的类对象时,所述转换目标对象包括所述消息;所述待转换对象包括所述消息时,所述转换目标对象包括所述预设编程语言程序中的类对象。
在一可选实施例中,待转换对象包括预设编程语言程序中的类对象,第一处理模块还用于:对类对象进行解析,得到类对象的详情信息;详情信息包括类对象的字段及字段对应的内容和字段对应的类型。
在一可选实施例中,类对象的详情信息还包括字段对应的注释信息,第一处理模块还用于:将类对象的字段对应的注释信息,作为转换目标对象中相应字段对应的注释信息。
在一可选实施例中,第一处理模块在根据消息与类对象的数据类型对应关系,对待转换对象的字段及字段对应的内容和字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息时,用于:调用目标插件,以使目标插件根据数据类型对应关系,将类对象中字段对应的类型转换为消息的消息格式适配的数据类型,得到类型转化信息,以及将字段及字段对应的内容分别转换为消息的字段及字段对应的内容,得到字段转化信息和内容转化信息。
在一可选实施例中,第一处理模块在调用目标插件时,用于:根据字段及字段的内容、数量和类型,生成目标插件可识别的目标文件;响应于插件选择操作,将目标文件传递给目标插件。
在一可选实施例中,第一处理模块还用于:若类对象的字段命名方式与消息格式对应的字段命名方式不同,则按照消息格式对应的命名方式对类对象转换后的字段进行调整。
在一可选实施例中,预设编程语言包括Java编程语言,类对象包括Java类对象,消息包括Protobuf消息;第一处理模块在根据数据类型对应关系,将类对象中字段对应的类型转换为消息的消息格式适配的数据类型时,用于:根据Protobuf消息格式和Java编程语言的语法规则,确定Protobuf消息与Java类对象的数据类型对应关系;根据数据类型对应关系,确定Protobuf消息中与Java类对象中字段的类型对应的目标数据类型;将Java类对象中字段的类型转换为Protobuf消息对应的目标数据类型,作为Protobuf消息格式适配的数据类型。
在一可选实施例中,第一处理模块在确定Protobuf消息中与Java类对象中字段的类型对应的目标数据类型时,用于:若Java类对象中字段的类型为Java编程语言的基本数据类型或基本数据类型对应的封装类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的基本数据类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的类对象类型,则确定Protobuf消息格式中的消息体类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的集合类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的集合类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的字符串或字符数组类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的数据类型为目标数据类型。
在一可选实施例中,第一处理模块在确定Protobuf消息格式中与字段的类型具有相同数据结构的集合类型为目标数据类型之后,还用于:针对集合类型字段中的每个集合字段元素,根据Protobuf消息与Java类对象的数据类型对应关系,将每个集合字段元素对应的类型转换为Protobuf消息格式适配的数据类型,以及将每个集合字段元素及每个集合字段元素对应的内容分别转换为目标数据类型中的每个集合字段元素及每个集合字段元素对应的内容。
在一可选实施例中,第二处理模块还用于:调用复制粘贴管理器将内容转化信息和类型转化信息复制并粘贴到剪切板;响应于对内容转化信息和类型转化信息的粘贴操作,将剪切板上的内容转化信息和类型转化信息粘贴到对应的存储对象,得到转换目标对象。
本申请实施例还提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由数据处理设备的处理器执行时,使得数据处理设备能够执行所述数据处理方法。
本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现所述数据处理方法。
在本申请实施例中,针对待转换的预设消息格式的消息或预设编程语言程序中的类对象,可以根据消息与类对象的数据类型对应关系,将待转换的消息或类对象的字段以及字段的内容和类型分别进行转换,得到对应的字段转化信息、内容转化信息以及类型转化信息;基于此,根据转换得到的字段转化信息、内容转化信息以及类型转化信息,可以得到待转换的消息与类对象对应的转换目标对象。通过这种方式,可以实现将具有预设消息格式的消息转换成预设编程语言程序中的类对象,或者将预设编程语言程序中的类对象转成具有预设消息格式的消息。以将Java类对象转换成Protobuf消息为例,开发人员在编写Java程序时,只需编写实现指定功能的Java类对象,无需编写用于转换Java类对象到Protobuf消息的功能代码,大大降低了开发人员的工作量以及代码的冗余。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
图1a是根据本申请实施例示出的一种数据处理方法的流程图;
图1b是根据一示例性实施例示出的一种数据处理方法执行过程示意图;
图1c是根据一示例性实施例示出的一种Java类对象到Protobuf消息的数据类型转换方法的流程图;
图2是本申请实施例提供的一种数据处理设备的结构示意图;
图3是本申请实施例提供的一种数据处理装置的结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本申请的技术方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的设备、装置和方法的例子。
在应用服务的开发过程中,很多场景下需要将一种对象转换成另一种对象进行处理,以降低开发成本或处理难度。例如,在对将具有预设消息格式的消息进行直接处理具有一定难度时,可将消息转换成预设编程语言程序中的类对象,通过对该类的对象进行处理可以降低处理难度;又例如,在对预设编程语言程序中的类对象进行直接处理具有难度时,可以将类对象转换为具有预设消息格式的消息,针对转换后的消息进行处理,实现起来简单快捷,等等。为了实现不同对象之间的转换,通常需要定义不同对象之间的转换规则,例如,在GRPC服务开发过程中,为了实现Java类对象与Protobuf消息的转换,开发人员既要编写Protobuf的消息格式,又要编写与Protobuf消息对应的Java类对象。这样,不仅增加了开发人员的工作难度,还增加了代码的冗余。
针对这种情况,本申请实施例提供一种数据处理方法,用于实现不同对象之间的自动转换,以减少开发人员的工作难度和代码冗余。
图1a为本申请实施例提供的数据处理方法的流程图,如图1a所示,方法包括:
S1、获取待转换对象,待转换对象包括消息或预设编程语言程序中的类对象;
S2、根据消息与类对象的数据类型对应关系,对待转换对象的字段及字段对应的内容和字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息;
S3、根据字段转化信息、内容转化信息和类型转化信息得到待转换对象对应的转换目标对象;其中,待转换对象为预设编程语言程序中的类对象时,转换目标对象为消息;待转换对象为消息时,转换目标对象为预设编程语言程序中的类对象。
在本申请实施例中,以待转换对象为预设编程语言程序中的类对象为例进行说明,关于待转换对象为具有预设消息格式的消息的情况,可以参照本申请实施例,具体实现过程暂不详述。
在本申请实施例中,在获取到待转换的类对象的情况下,可以对类对象进行解析,得到类对象的详情信息;可选地,类对象的详情信息中至少包括类对象的字段及字段对应的内容和字段对应的类型;进一步可选地,类对象的详情信息中还可以包括字段对应的注释信息,则在将类对象转换为具有预设消息格式的消息时,还可以将类对象的字段对应的注释信息,作为消息中相应字段对应的注释信息。
在本申请实施例中,不限定将待转换的类对象的字段及字段对应的内容和字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息的具体方式,可选地,可以调用目标插件,以使目标插件根据数据类型对应关系,将类对象中字段对应的类型转换为消息的消息格式适配的数据类型,得到类型转化信息;以及将字段及字段对应的内容分别转换为消息的字段及字段对应的内容,得到字段转化信息和内容转化信息。
进一步可选地,在调用目标插件之前,还可以根据类对象的字段及字段的内容、数量和类型,生成目标插件可识别的目标文件,并在响应到插件选择操作的情况下,将目标文件传递给目标插件,以供目标插件根据目标文件,将类对象的字段及字段对应的内容和类型进行分别转换。
在本申请实施例中,除了将类对象的字段以及字段的内容和类型进行转换之外,为了使转换后的消息具有更高的可读性,还可以对类对象中字段的命名方式进行转换。可选地,若类对象的字段命名方式与消息格式对应的字段命名方式不同,则按照消息格式对应的命名方式对类对象转换后的字段进行调整,以得到符合消息格式的字段命名方式,使转换后的消息能够见名知意,方便阅读。
下面,以预设编程语言程序中的类对象为Java类对象、具有预设消息格式的消息为Protobuf消息为例,对本申请实施例中将Java类对象转换为Protobuf消息的过程进行详细说明。在本申请实施例中,不限定实现数据处理方法的执行主体的实现形态,可以是应用于程序编辑工具中插件例如Java归档文件(Java ARchive,Jar),也可以是单独的可执行的程序文件,本申请实施例以插件形态为例,结合插件安装在程序编辑工具的场景下,对本申请实施例提供的数据处理方法的执行过程进行说明。
在本申请实施例中,不限定程序编辑工具的具体实现形式,任何具有插件扩展能力且适用于Java开发环境的程序编辑工具均适用于本申请实施例。在本申请实施例中,以程序编辑工具为应用于集成开发环境(Integrated Development Environment,IDE)中的Intellij Idea为例,将实现Java类对象到Protobuf消息转换功能的IDE插件作为本申请实施例中的目标插件。基于此,开发人员可以将目标插件安装在Intellij Idea中,利用Intellij Idea提供的程序编辑界面编写Java程序并生成Java类对象;可选地,生成的Java类对象可以为简单普通的Java类对象(Plain Ordinary Java Object,POJO),也可以是具有一定逻辑功能的类对象,在此不做限定。进一步,在得到Java类对象之后,可以利用目标插件对Java类对象进行转换,得到符合Protobuf消息格式的Protobuf消息。在整个开发过程中,开发人员只需编写实现业务功能所需的Java类对象,无需编写Protobuf消息的消息格式,而Java类对象到Protobuf消息的转换工作交由插件完成,这样不仅减轻了开发人员的工作量,还减少了代码的冗余。
图1b为本申请实施例中程序编辑工具和目标插件相结合实现上述数据处理方法的过程示意图。如图1b所示,程序编辑工具10包括程序编辑界面01和程序编辑工具内核02,开发人员可以利用程序编辑界面01编写Java程序并生成Java类对象。进一步,在得到Java类对象的情况下,开发人员可以针对每个Java类对象执行插件选择操作来选择目标插件03,以供目标插件03根据Java类对象的数据类型与Protobuf消息的数据类型的对应关系对Java类对象的详情信息进行转换,得到符合Protobuf消息格式的Protobuf消息。
可选地,开发人员可以从多个Java类对象中选中目标Java类对象,并通过触发插件展示操作展示插件列表,以及从插件列表中选择目标插件03。进一步可选地,开发人员可以通过点选单独的控件或者通过鼠标右键等形式触发插件展示操作,并在展示的插件列表中从中选择目标插件03,并执行目标插件03对选择的目标Java类对象进行转换。
进一步,程序编辑工具内核02在感知到开发人员选择目标插件03的情况下,可以识别开发人员选择的目标Java类对象并解析Java类对象中的详情信息,得到Java类对象中的字段及字段的内容和类型,并将解析到的详情信息传递给目标插件03。进一步,目标插件03可以根据Java类对象的数据类型与Protobuf消息的数据类型的对应关系,将Java类对象中字段的类型转换为Protobuf消息格式适配的数据类型,以及将Java类中的字段以及字段的内容转换为Protobuf消息的字段和字段的内容,得到符合Protobuf消息格式的Protobuf消息。
在本申请可选实施例中,目标插件03可以根据Java类对象的数据类型与Protobuf消息的数据类型的对应关系,确定Protobuf消息中与Java类对象中字段的类型对应的目标数据类型,并将Java类对象中字段的类型转换为Protobuf消息中对应的目标数据类型。可选地,Java类对象的数据类型与Protobuf消息的数据类型的对应关系如表1所示,其中,序号1-5为Java类对象的基本数据类型、序号6-10为Java类对象的基本数据类型分别对应的封装类型、序号11和12为Java类对象的集合类型、序号13为Java类对象对应的类对象类型、序号14为Java类对象中字符串类型,序号15是Protobuf消息格式中定义的一种Java类型,对应于Protobuf消息格式中的bytes类型,用于表示二进制字节数组。需要说明的是,表1中的对应关系仅为示例性说明,并不限于此,根据不同的业务需求,表1中Java类对象的数据类型和Protobuf消息中对应的数据类型的数量还可以更多或更少,在此不做限定。
如表1所示,Java类对象的基本数据类型及其封装类型在Protobuf消息中具有相同的数据结构,对应相同的数据类型。基于此,目标插件在根据Java类对象的数据类型与Protobuf消息的数据类型的对应关系,确定Protobuf消息中与Java类对象中字段的类型对应的目标数据类型时,可以将Java类对象中字段的类型作为原始数据类型,并确定原始数据类型是否为Java类对象的基本数据类型或基本数据类型的封装类型、对象类型、集合类型、字符串类型或字符数组类型中的任一种。进一步,在确定原始数据类型的情况下,可根据表1中的对应关系,确定Protobuf消息中与原始数据类型对应的数据类型为目标数据类型。
图1c为目标插件03确定原始数据类型以及根据Java类对象的数据类型与Protobuf消息的数据类型的对应关系确定目标数据类型的流程图。如图1c所示,目标插件03在获取到Java类对象的详情信息的情况下,遍历Java类对象中的字段,识别Java类对象中字段的类型。进一步,针对每个字段对应的原始类型,判断原始数据类型是否为Java类对象的基本数据类型或基本数据类型的封装类型,若是,则确定Protobuf消息中与原始数据类型具有相同数据结构的基本数据类型为目标数据类型;否则,继续判断原始数据类型是否为类对象类型,若是,则确定Protobuf消息中的消息体类型为目标数据类型;否则,继续判断原始数据类型是否为Java类对象的集合类型,若是,则确定Protobuf消息中与原始数据类型具有相同数据结构的集合类型为目标数据类型;否则,继续判断原始数据类型是否为Java类对象的字符串或字符数组类型,若是,则确定Protobuf消息中与原始数据类型具有相同数据结构的数据类型为目标数据类型;否则,对未识别出类型是数据作异常处理,并继续遍历Java类对象中的字段,进行后续转换。
在本申请实施例中,如图1c所示,在原始数据类型为Java类对象的集合类型的情况下,还可以根据Protobuf消息与Java类对象的数据类型对应关系,针对集合类型中的每个集合字段元素进行数据类型的转换,以将每个集合字段元素的字段类型转换为Protobuf消息格式适配的数据类型。进一步可选地,还可以将每个集合字段元素及每个集合字段元素对应的内容分别转换为目标数据类型中的每个集合字段元素及每个集合字段元素对应的内容。
结合表1中的对应关系可知,在图1c所示流程中,若原始数据类型是int类型或Integer类型,则确定目标类型为Protobuf中的int32类型;若原始数据类型是boolean类型或Boolean类型,则确定目标类型为Protobuf中的bool类型;若原始数据类型是Class类型,则确定目标类型为Protobuf中的message类型;若原始数据类型是List类型,则确定目标类型为Protobuf中的repeated类型;若原始数据类型是Map类型,则确定目标类型为Protobuf中的map类型;若原始数据类型是String类型,则确定目标类型为Protobuf中的string类型;若原始数据类型是ByteString类型,则确定目标类型为Protobuf中的bytes类型,当然并不限于此。
表1
序号 | Java的数据类型 | Protobuf的数据类型 |
1 | long | int64 |
2 | int | int32 |
3 | double | double |
4 | float | float |
5 | boolean | bool |
6 | java.lang.Long | int64 |
7 | java.lang.Integer | int32 |
8 | java.lang.Double | double |
9 | java.lang.Float | float |
10 | java.lang.Boolean | bool |
11 | java.util.List | repeated |
12 | java.util.Map | map |
13 | java.lang.Class | message |
14 | java.lang.String | string |
15 | com.google.protobuf.ByteString | bytes |
在本申请实施例中,程序编辑工具内核02在对Java类对象进行解析并得到Java类对象的详情信息的情况下,还可以根据字段的内容和数量以及字段的类型,生成目标插件03可识别的目标文件。例如,目标文件可以是Intellij Idea可以识别的PisClass类对象,其中包括Java类对象的名称、Java类对象的字段数量以及字段的名称、内容和类型。进一步可选地,程序编辑工具内核02在响应到开发人员执行插件选择操作的情况下,可以确定用于实现Java类对象到Protobuf消息转换的目标插件03,并将目标文件传递给目标插件03。目标插件03接收到目标文件的情况下,可以识别目标文件的信息,并根据表1所示的对应关系将目标文件中的字段类型转换为Protobuf消息格式适配的类型,以及将目标文件中的字段以及字段的内容转换为Protobuf消息的字段和字段的内容。
进一步可选地,程序编辑工具内核02解析到的Java类对象的详情信息还可以包括字段对应的注释信息,则程序编辑工具内核02在根据Java类对象的详情信息生成的目标文件中还包括Java类对象的字段对应的注释信息。进一步,目标插件03在根据表1中的对应关系对目标文件的信息转换之后,还可以将Java类对象的字段对应的注释信息,作为转换后的Protobuf消息的字段对应的注释信息。
进一步可选地,在对目标文件的信息进行转换之后,目标插件03还可以识别Java对象类转换后的字段对应的命名方式,若命名方式与Protobuf消息的字段对应的命名方式不同,则按照Protobuf消息的字段对应的命名方式调整Java类对象转换后的字段对应的命名方式。例如,在Java类对象中字段通常采用驼峰命名方式,而在Protobuf消息中字段通常采用点分割或下划线分割的命名方式,基于此,目标插件03可以识别Java类对象中的字段名称对应的命名方式,并在确定不是点分割或下划线分割命名方式的情况下,按照点Protobuf消息中字段对应的命名方式对转换后的字段名称重新命名,得到符合Protobuf消息格式的命名方式。当然,上述重命名的方式仅为实例性说明,并不限于此,根据原命名方式与目标命名方式的不同,转换方式也可以不同,在此不做限定。
基于上述,以如下示例对Java类对象到Protobuf消息的转换方式进行示例性说明。
假设Java类对象的详情信息如下:
程序编辑工具内核02在确定上述Java类对象的详情信息的情况下,可以对其进行解析,识别Java类对象中字段的内容、类型、名称和数量,并基于得到想信息生成程序编辑工具内核02可识别的目标文件,例如目标文件中可包括如下信息:
类名成:Student;
字段数量:3;
字段类型、名称及注释:
String name; //学生姓名
int age; //学生年龄
int stuNum; //学生学号
基于上述,目标插件在获得到目标文件的信息的情况下,可以根据Java类对象的数据类型与Protobuf消息的数据类型的对应关系对上述信息进行转换,并根据Protobuf消息中字段的命名方式对Java类对象转换后的字段名称进行重命名,假设Protobu f消息中字段的命名方式为下划线分割方式,则得到如下信息:
需要说明的是,上述实施例以Java的POJO类对象为例对Java类对象到Protobuf消息的转换过程进行示例性说明,但并不限于此。进一步说明,由于Java的POJO类对象中的get方法和set方法可以由Java中的字段名称推导得出,在对Java类对象进行转换时,可以只转换Java的字段信息,无需处理各字段对应的get方法和set方法,程序代码更加简洁。
进一步,如图1b所示,在得到转换后的信息的情况下,目标插件03可以调用系统的复制粘贴管理器04,将目标插件03转换得到的信息行复制并粘贴到系统的剪切板,并在响应到开发人员对剪切板中的信息执行粘贴操作的情况下,将剪切板上的信息粘贴到GRPC服务对应的存储对象05中,得到Protobuf消息;其中,存储对象05可以为指定目录下的文件。基于此,开发人员可将该文件应用与GRPC服务中,用于实现GRPC服务中的指定功能。
在本申请实施例中,针对编程得到的Java类对象,可以通过用于实现Java类对象到Protobuf消息转换的插件将Java类对象中的字段类型转换为Protobuf消息格式适配的数据类型,以及将Java的字段和字段的内容及注释信息转换为Protobuf消息的字段及字段内容和注释信息;并且,对于转换后的Java类对象的字段对应的命名方式,还可以调整为符合Protobuf消息格式的命名方式,以根据转换后的Java类对象生成Protobuf消息,用于实现指定功能的GRPC服务。通过这种方式,开发人员只需编写实现指定功能的Java类对象,无需编写于转换Java类对象到Protobuf消息的功能代码,将转换工作交由插件自动完成,大大降低了开发人员的工作量和代码的冗余。
需要说明的是,本申请实施例是以Java类对象到Protobuf消息转换的方式为例进行说明,在具体的应用场景下,本申请实施例也可以应用于C、C++、PHP以及其他编程语言对应的类对象到Protobuf消息或其他格式消息的转换场景中,在此不做限定。上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤S1至步骤S3的执行主体可以为设备A;又比如,步骤S1的执行主体可以为设备A,步骤S2和步骤S3的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如S1、S2等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本申请实施例还提供了一种数据处理设备,图2为本申请实施例的处理器使用数据处理设备的结构示意图,如图2所示,数据处理设备包括:处理器21以及存储有计算机程序的存储器22。其中,处理器21和存储器22可以是一个或多个。
存储器22,主要用于存储计算机程序,这些计算机程序可被处理器执行,致使处理器控制处理器21使用数据处理设备实现相应功能、完成相应动作或任务。除了存储计算机程序之外,存储器还可被配置为存储其它各种数据以支持在处理器21使用数据处理设备上的操作,这些数据的示例包括用于在处理器21使用数据处理设备上操作的任何应用程序或方法的指令。
存储器22,可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请实施例中,并不限定处理器21的实现形态,例如可以是但不限于CPU、GPU或MCU等。处理器21可以看作是数据处理设备的控制单元,可用于执行存储器22中存储的计算机程序,以控制数据处理设备实现相应功能、完成相应动作或任务。值得说明的是,根据数据处理设备实现形态以及所处于场景的不同,其所需实现的功能、完成的动作或任务会有所不同;相应地,存储器22中存储的计算机程序也会有所不同,而处理器21执行不同计算机程序可控制数据处理设备实现不同的功能、完成不同的动作或任务。
在一些可选实施例中,如图2所示,数据处理设备还可以包括:通信组件23、显示器24以及电源组件25等其它组件。图2中仅示意性给出部分组件,并不意味着数据处理设备只包括图2所示组件,针对不同的应用需求,数据处理设备还可以包括其他组件,具体可视数据处理设备的产品形态而定。
在本申请实施例中,不限定数据处理设备的使用场景和实现形态,在不同的使用场景中,数据处理设备的实现形态也可能不同。例如,在物联网场景中,以车辆使用场景为例,数据处理设备可以为车载设备中的一种;又例如,在互联网或其他场景中,数据处理设备可以为单独的终端设备、计算机设备或云端服务器等等,在此不做限定。
在本申请实施例中,当处理器21执行存储器22中的计算机程序时,以用于:获取待转换对象,待转换对象包括消息或预设编程语言程序中的类对象;根据消息与类对象的数据类型对应关系,对待转换对象的字段及字段对应的内容和字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息;根据字段转化信息、内容转化信息和类型转化信息得到待转换对象对应的转换目标对象;其中,待转换对象包括所述预设编程语言程序中的类对象时,转换目标对象包括消息;待转换对象包括所述消息时,转换目标对象包括预设编程语言程序中的类对象。
在一可选实施例中,待转换对象包括预设编程语言程序中的类对象,处理器21还用于:对类对象进行解析,得到类对象的详情信息;详情信息包括类对象的字段及字段对应的内容和字段对应的类型。
在一可选实施例中,类对象的详情信息还包括字段对应的注释信息,处理器21还用于:将类对象的字段对应的注释信息,作为转换目标对象中相应字段对应的注释信息。
在一可选实施例中,处理器21在根据消息与类对象的数据类型对应关系,对待转换对象的字段及字段对应的内容和字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息时,用于:调用目标插件,以使目标插件根据数据类型对应关系,将类对象中字段对应的类型转换为消息的消息格式适配的数据类型,得到类型转化信息,以及将字段及字段对应的内容分别转换为消息的字段及字段对应的内容,得到字段转化信息和内容转化信息。
在一可选实施例中,处理器21在调用目标插件时,用于:根据字段及字段的内容、数量和类型,生成目标插件可识别的目标文件;响应于插件选择操作,将目标文件传递给目标插件。
在一可选实施例中,处理器21还用于:若类对象的字段命名方式与消息格式对应的字段命名方式不同,则按照消息格式对应的命名方式对类对象转换后的字段进行调整。
在一可选实施例中,预设编程语言包括Java编程语言,类对象包括Java类对象,消息包括Protobuf消息;处理器21在根据数据类型对应关系,将类对象中字段对应的类型转换为消息的消息格式适配的数据类型时,用于:根据Protobuf消息格式和Java编程语言的语法规则,确定Protobuf消息与Java类对象的数据类型对应关系;根据数据类型对应关系,确定Protobuf消息中与Java类对象中字段的类型对应的目标数据类型;将Java类对象中字段的类型转换为Protobuf消息对应的目标数据类型,作为Protobuf消息格式适配的数据类型。
在一可选实施例中,处理器21在确定Protobuf消息中与Java类对象中字段的类型对应的目标数据类型时,用于:若Java类对象中字段的类型为Java编程语言的基本数据类型或基本数据类型对应的封装类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的基本数据类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的类对象类型,则确定Protobuf消息格式中的消息体类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的集合类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的集合类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的字符串或字符数组类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的数据类型为目标数据类型。
在一可选实施例中,处理器21在确定Protobuf消息格式中与字段的类型具有相同数据结构的集合类型为目标数据类型之后,还用于:针对集合类型字段中的每个集合字段元素,根据Protobuf消息与Java类对象的数据类型对应关系,将每个集合字段元素对应的类型转换为Protobuf消息格式适配的数据类型,以及将每个集合字段元素及每个集合字段元素对应的内容分别转换为目标数据类型中的每个集合字段元素及每个集合字段元素对应的内容。
在一可选实施例中,处理器21还用于:调用复制粘贴管理器将内容转化信息和类型转化信息复制并粘贴到剪切板;响应于对内容转化信息和类型转化信息的粘贴操作,将剪切板上的内容转化信息和类型转化信息粘贴到对应的存储对象,得到转换目标对象。
本申请实施例还提供一种数据处理装置。例如该数据处理装置可实现为通信控制器(Communication Control Unit,CCU)中的虚拟装置,例如应用程序。如图3所示,该数据处理装置包括获取模块301、第一处理模块302和第二处理模块303;其中,获取模块301用于获取待转换对象,待转换对象包括消息或预设编程语言程序中的类对象;第一处理模块302用于根据消息与类对象的数据类型对应关系,对待转换对象的字段及字段对应的内容和字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息;第二处理模块303用于根据字段转化信息、内容转化信息和类型转化信息得到待转换对象对应的转换目标对象;其中,待转换对象包括预设编程语言程序中的类对象时,转换目标对象包括消息;待转换对象包括消息时,转换目标对象包括预设编程语言程序中的类对象。
在一可选实施例中,待转换对象包括预设编程语言程序中的类对象,第一处理模块302还用于:对类对象进行解析,得到类对象的详情信息;详情信息包括类对象的字段及字段对应的内容和字段对应的类型。
在一可选实施例中,类对象的详情信息还包括字段对应的注释信息,第一处理模块302还用于:将类对象的字段对应的注释信息,作为转换目标对象中相应字段对应的注释信息。
在一可选实施例中,第一处理模块302在根据消息与类对象的数据类型对应关系,对待转换对象的字段及字段对应的内容和字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息时,用于:调用目标插件,以使目标插件根据数据类型对应关系,将类对象中字段对应的类型转换为消息的消息格式适配的数据类型,得到类型转化信息,以及将字段及字段对应的内容分别转换为消息的字段及字段对应的内容,得到字段转化信息和内容转化信息。
在一可选实施例中,第一处理模块302在调用目标插件时,用于:根据字段及字段的内容、数量和类型,生成目标插件可识别的目标文件;响应于插件选择操作,将目标文件传递给目标插件。
在一可选实施例中,第一处理模块302还用于:若类对象的字段命名方式与消息格式对应的字段命名方式不同,则按照消息格式对应的命名方式对类对象转换后的字段进行调整。
在一可选实施例中,预设编程语言包括Java编程语言,类对象包括Java类对象,消息包括Protobuf消息;第一处理模块302在根据数据类型对应关系,将类对象中字段对应的类型转换为消息的消息格式适配的数据类型时,用于:根据Protobuf消息格式和Java编程语言的语法规则,确定Protobuf消息与Java类对象的数据类型对应关系;根据数据类型对应关系,确定Protobuf消息中与Java类对象中字段的类型对应的目标数据类型;将Java类对象中字段的类型转换为Protobuf消息对应的目标数据类型,作为Protobuf消息格式适配的数据类型。
在一可选实施例中,第一处理模块302在确定Protobuf消息中与Java类对象中字段的类型对应的目标数据类型时,用于:若Java类对象中字段的类型为Java编程语言的基本数据类型或基本数据类型对应的封装类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的基本数据类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的类对象类型,则确定Protobuf消息格式中的消息体类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的集合类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的集合类型为目标数据类型;若Java类对象中字段的类型为Java编程语言的字符串或字符数组类型,则确定Protobuf消息格式中与字段的类型具有相同数据结构的数据类型为目标数据类型。
在一可选实施例中,第一处理模块302在确定Protobuf消息格式中与字段的类型具有相同数据结构的集合类型为目标数据类型之后,还用于:针对集合类型字段中的每个集合字段元素,根据Protobuf消息与Java类对象的数据类型对应关系,将每个集合字段元素对应的类型转换为Protobuf消息格式适配的数据类型,以及将每个集合字段元素及每个集合字段元素对应的内容分别转换为目标数据类型中的每个集合字段元素及每个集合字段元素对应的内容。
在一可选实施例中,第二处理模块303还用于:调用复制粘贴管理器将内容转化信息和类型转化信息复制并粘贴到剪切板;响应于对内容转化信息和类型转化信息的粘贴操作,将剪切板上的内容转化信息和类型转化信息粘贴到对应的存储对象,得到转换目标对象。
需要说明的是,关于上述数据处理设备的处理器和数据处理装置的各模块执行操作的具体方式已经在有关方法的实施例中进行了详细描述,此处将不做详细阐述说明。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由数据处理设备执行的各步骤。
相应地,本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述方法实施例中可由数据处理设备执行的各步骤。
上述实施例中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述实施例中的显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
上述实施例中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述实施例中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
获取待转换对象;所述待转换对象包括消息或预设编程语言程序中的类对象;
根据所述消息与所述类对象的数据类型对应关系,对所述待转换对象的字段及所述字段对应的内容和所述字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息;
根据所述字段转化信息、内容转化信息和类型转化信息得到所述待转换对象对应的转换目标对象;
其中,所述待转换对象包括所述预设编程语言程序中的类对象时,所述转换目标对象包括所述消息;所述待转换对象包括所述消息时,所述转换目标对象包括所述预设编程语言程序中的类对象。
2.根据权利要求1所述的方法,其特征在于,所述待转换对象包括所述预设编程语言程序中的类对象,所述方法还包括:
对所述类对象进行解析,得到所述类对象的详情信息;所述详情信息包括所述类对象的字段及所述字段对应的内容和所述字段对应的类型。
3.根据权利要求2所述的方法,其特征在于,根据所述消息与所述类对象的数据类型对应关系,对所述待转换对象的字段及所述字段对应的内容和所述字段对应的类型进行分别转换得到字段转化信息、内容转化信息和类型转化信息,包括:
调用目标插件,以使所述目标插件根据所述数据类型对应关系,将所述类对象中字段对应的类型转换为所述消息的消息格式适配的数据类型,得到所述类型转化信息,以及将所述字段及所述字段对应的内容分别转换为所述消息的字段及字段对应的内容,得到所述字段转化信息和内容转化信息。
4.根据权利要求3所述的方法,其特征在于,所述预设编程语言包括Java编程语言,所述类对象包括Java类对象,所述消息包括Protobuf消息;所述根据所述数据类型对应关系,将所述类对象中字段对应的类型转换为所述消息的消息格式适配的数据类型,包括:
根据Protobuf消息格式和Java编程语言的语法规则,确定所述Protobuf消息与所述Java类对象的数据类型对应关系;根据所述数据类型对应关系,确定Protobuf消息中与所述Java类对象中字段的类型对应的目标数据类型;
将所述Java类对象中字段的类型转换为所述Protobuf消息对应的目标数据类型,作为所述Protobuf消息格式适配的数据类型。
5.根据权利要求4所述的方法,其特征在于,所述确定Protobuf消息中与所述Java类对象中字段的类型对应的目标数据类型,包括:
若所述Java类对象中字段的类型为Java编程语言的基本数据类型或所述基本数据类型对应的封装类型,则确定所述Protobuf消息格式中与所述字段的类型具有相同数据结构的基本数据类型为所述目标数据类型;
若所述Java类对象中字段的类型为Java编程语言的类对象类型,则确定所述Protobuf消息格式中的消息体类型为所述目标数据类型;
若所述Java类对象中字段的类型为Java编程语言的集合类型,则确定所述Protobuf消息格式中与所述字段的类型具有相同数据结构的集合类型为所述目标数据类型;
若所述Java类对象中字段的类型为Java编程语言的字符串或字符数组类型,则确定所述Protobuf消息格式中与所述字段的类型具有相同数据结构的数据类型为所述目标数据类型。
6.根据权利要求5所述的方法,其特征在于,所述确定所述Protobuf消息格式中与所述字段的类型具有相同数据结构的集合类型为所述目标数据类型之后,还包括:
针对所述集合类型字段中的每个集合字段元素,根据所述Protobuf消息与所述Java类对象的数据类型对应关系,将所述每个集合字段元素对应的类型转换为所述Protobuf消息格式适配的数据类型,以及将所述每个集合字段元素及所述每个集合字段元素对应的内容分别转换为所述目标数据类型中的每个集合字段元素及每个集合字段元素对应的内容。
7.一种数据处理设备,其特征在于,包括:处理器以及存储有计算机程序的存储器;
所述处理器,用于执行所述计算机程序,以用于:
获取待转换对象;所述待转换对象包括消息或预设编程语言程序中的类对象;
根据所述消息与所述类对象的数据类型对应关系,对所述待转换对象的字段及所述字段对应的内容和所述字段对应的类型进行分别转换得到内容转化信息和类型转化信息;
根据所述内容转化信息和类型转化信息得到所述待转换对象对应的转换目标对象;
其中,所述待转换对象包括所述预设编程语言程序中的类对象时,所述转换目标对象包括所述消息;所述待转换对象包括所述消息时,所述转换目标对象包括所述预设编程语言程序中的类对象。
8.一种数据处理装置,其特征在于,包括:获取模块、第一处理模块和第二处理模块;
所述获取模块,用于获取待转换对象;所述待转换对象包括消息或预设编程语言程序中的类对象;
所述第一处理模块,用于根据所述消息与所述类对象的数据类型对应关系,对所述待转换对象的字段及所述字段对应的内容和所述字段对应的类型进行分别转换得到内容转化信息和类型转化信息;
所述第一处理模块,用于根据所述内容转化信息和类型转化信息得到所述待转换对象对应的转换目标对象;
其中,所述待转换对象包括所述预设编程语言程序中的类对象时,所述转换目标对象包括所述消息;所述待转换对象包括所述消息时,所述转换目标对象包括所述预设编程语言程序中的类对象。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由数据处理设备的处理器执行时,使得数据处理设备能够执行如权利要求1-6任一项所述的数据处理方法。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1-6任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111486619.4A CN114385128A (zh) | 2021-12-07 | 2021-12-07 | 数据处理方法、设备、装置、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111486619.4A CN114385128A (zh) | 2021-12-07 | 2021-12-07 | 数据处理方法、设备、装置、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385128A true CN114385128A (zh) | 2022-04-22 |
Family
ID=81195315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111486619.4A Pending CN114385128A (zh) | 2021-12-07 | 2021-12-07 | 数据处理方法、设备、装置、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385128A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114723565A (zh) * | 2022-06-02 | 2022-07-08 | 高盈国际创新科技(深圳)有限公司 | 基于golang的多源多语言信息处理方法及系统 |
-
2021
- 2021-12-07 CN CN202111486619.4A patent/CN114385128A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114723565A (zh) * | 2022-06-02 | 2022-07-08 | 高盈国际创新科技(深圳)有限公司 | 基于golang的多源多语言信息处理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11538046B2 (en) | Page data acquisition method, apparatus, server, electronic device and computer readable medium | |
CN106569800B (zh) | 前端界面生成方法及装置 | |
US20190129734A1 (en) | Data collection workflow extension | |
CN105335132B (zh) | 一种自定义应用程序功能的方法、装置以及系统 | |
CN109561117B (zh) | 数据采集方法及装置 | |
CN111443909B (zh) | 用于生成页面的方法及装置 | |
US20140074894A1 (en) | Format conversion of metadata associated with digital content | |
US11934287B2 (en) | Method, electronic device and computer program product for processing data | |
CN109062906B (zh) | 程序语言资源的翻译方法及装置 | |
CN112395098B (zh) | 应用程序接口调用方法、装置、存储介质和电子设备 | |
CN114385128A (zh) | 数据处理方法、设备、装置、存储介质及程序产品 | |
CN106610845B (zh) | 信息管理方法、装置、服务器及系统 | |
CN109800020B (zh) | 一种程序开发的代码自动调整方法、装置、设备和介质 | |
CN114996134A (zh) | 容器化部署方法、电子设备及存储介质 | |
CN110399384B (zh) | Udf适配方法、数据处理方法、设备及存储介质 | |
US11934420B2 (en) | Systems and methods for componentization and plug and play workflows | |
CN114547514A (zh) | 组件动态渲染方法、装置、设备及介质 | |
CN114546359A (zh) | Dsl描述文件生成方法、装置、设备及存储介质 | |
US20190121681A1 (en) | Framework for integrating a user device and a mainframe system | |
CN114895851A (zh) | 数据处理方法、装置、存储介质以及电子设备 | |
CN108932130B (zh) | 一种实现服务器功能调用的代码生成方法及装置 | |
KR20150033393A (ko) | NFC 지원 UI framework를 이용하여 NDEF 데이터를 전송하는 방법 | |
CN110858240A (zh) | 一种前端模块加载方法和装置 | |
CN115378996B (zh) | 一种系统间数据传输的方法、装置、设备和存储介质 | |
CN118312155A (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 |