CN113515326B - 数据转换方法、装置、电子设备以及存储介质 - Google Patents

数据转换方法、装置、电子设备以及存储介质 Download PDF

Info

Publication number
CN113515326B
CN113515326B CN202110542975.7A CN202110542975A CN113515326B CN 113515326 B CN113515326 B CN 113515326B CN 202110542975 A CN202110542975 A CN 202110542975A CN 113515326 B CN113515326 B CN 113515326B
Authority
CN
China
Prior art keywords
data
node
offset
node data
nodes
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
Application number
CN202110542975.7A
Other languages
English (en)
Other versions
CN113515326A (zh
Inventor
何子南
王凯
邢培康
李炯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202110542975.7A priority Critical patent/CN113515326B/zh
Publication of CN113515326A publication Critical patent/CN113515326A/zh
Application granted granted Critical
Publication of CN113515326B publication Critical patent/CN113515326B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种数据转换方法,包括:获取第一数据,第一数据包含多个节点数据,第一数据的数据结构为下挂结构;解析第一数据,得到所有节点数据以及每个节点数据对应的节点在下挂结构中的父节点;根据每个节点的父节点,分别计算每个节点对应的节点数据的偏移量;根据每个节点数据的偏移量,分别将每个节点数据存储到数据存储类中,得到第二数据,第二数据的数据结构为下挂结构。本公开还提供了一种数据转换装置、电子设备以及计算机可读存储介质。

Description

数据转换方法、装置、电子设备以及存储介质
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种数据转换方法、装置、电子设备以及可读存储介质。
背景技术
Java Bean是一种通过Java语言写成的可重用组件。该重用组件对不同的运行环境都具有较强的适应能力,因此,在开发过程中,Java Bean类被广泛运用,尤其在数据存储方面。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:JavaBean现有的数据存储方式,通常是为每个存储字段创建一个成员变量,但每个存储字段对应的成员变量无法表示银行业务数据中常见的下挂结构,进而也无法体现数据之间的关联性。
发明内容
有鉴于此,本公开提供了一种数据转换方法和装置。
本公开的一个方面提供了一种数据转换方法,包括:获取第一数据,所述第一数据包含多个节点数据,所述第一数据的数据结构为下挂结构;解析所述第一数据,得到所有节点数据以及每个所述节点数据对应的节点在所述下挂结构中的父节点;根据每个所述节点的所述父节点,分别计算每个所述节点对应的节点数据的偏移量;根据每个所述节点数据的所述偏移量,分别将每个所述节点数据存储到数据存储类中,得到第二数据,所述第二数据的数据结构为所述下挂结构。
根据本公开的实施例,所述根据每个所述节点的所述父节点,分别计算每个所述节点对应的节点数据的偏移量,包括:定义每个所述父节点对应的节点数据的第一偏移量;基于所述第一偏移量,分别计算每个所述父节点的每个子节点对应的节点数据的第二偏移量,所述第二偏移量包含所述第一偏移量和所述子节点对应的节点数据的偏移量。
根据本公开的实施例,在所述根据每个所述节点的所述父节点,分别计算每个所述节点对应的节点数据的偏移量之前,所述方法包括:从所有节点数据中获取所有父节点对应的节点数据;分别判断每个父节点对应的节点数据是否具有数组定义;若存在父节点对应的节点数据具有数组定义,则获取所述父节点的所有子节点对应的节点数据;为所述所有子节点对应的节点数据分别添加数组定义。
根据本公开的实施例,在所述根据每个所述节点数据的所述偏移量,分别将每个所述节点数据存储到数据存储类中,得到第二数据之前,所述方法包括:确定所述第一数据包含的字段总长度;基于所述字段总长度,在所述数据存储类中创建数据存储区域,所述数据存储区域用于存储所述第二数据。
根据本公开的实施例,所述数据存储类包含预先构建的get函数和set函数,所述根据每个所述节点数据的所述偏移量,分别将每个所述节点数据存储到数据存储类中,得到第二数据,包括:根据每个所述节点数据的所述偏移量,通过get函数获取所有节点数据;根据每个所述节点数据的所述偏移量,通过set函数将所述所有节点数据存储到数据存储类中。
根据本公开的实施例,在所述根据每个所述节点数据的所述偏移量,分别将每个所述节点数据存储到数据存储类中,得到第二数据之前,所述方法包括:为所有节点在所述数据存储类中创建对应的字段名称,所述字段名称与所述数据存储类的存储规范相适应。
根据本公开的实施例,所述数据存储类为Java Bean类。
本公开的另一个方面提供了一种数据转换装置,包括:第一获取模块,用于获取第一数据,所述第一数据包含多个节点数据,所述第一数据的数据结构为下挂结构;解析模块,用于解析所述第一数据,得到所有节点数据以及每个所述节点数据对应的节点在所述下挂结构中的父节点;计算模块,用于根据每个所述节点的所述父节点,分别计算每个所述节点对应的节点数据的偏移量;存储模块,用于根据每个所述节点数据的所述偏移量,分别将每个所述节点数据存储到数据存储类中,得到第二数据,所述第二数据的数据结构为所述下挂结构。
根据本公开的实施例,所述计算模块包括:定义单元,用于定义每个所述父节点对应的节点数据的第一偏移量;计算单元,用于基于所述第一偏移量,分别计算每个所述父节点的每个子节点对应的节点数据的第二偏移量,所述第二偏移量包含所述第一偏移量和所述子节点对应的节点数据的偏移量。
根据本公开的实施例,所述装置还包括:第二获取模块,用于从所有节点数据中获取所有父节点对应的节点数据;判断模块,用于分别判断每个父节点对应的节点数据是否具有数组定义;第三获取模块,用于若所述父节点对应的节点数据具有数组定义,则获取所述父节点的所有子节点对应的节点数据;添加模块,用于为所述所有子节点对应的节点数据分别添加数组定义。
根据本公开的实施例,所述装置还包括:确定模块,用于确定所述第一数据包含的字段总长度;第一创建模块,用于基于所述字段总长度,在所述数据存储类中创建数据存储区域,所述数据存储区域用于存储所述第二数据。
根据本公开的实施例,所述存储模块包括:获取单元,用于根据每个所述节点数据的所述偏移量,通过get函数获取所有节点数据;存储单元,用于根据每个所述节点数据的所述偏移量,通过set函数将所述所有节点数据存储到数据存储类中。
根据本公开的实施例,所述装置还包括:第二创建模块,用于为所有节点在所述数据存储类中创建对应的字段名称,所述字段名称与所述数据存储类的存储规范相适应
本公开的另一方面提供了一种电子设备,所述电子设备包括一个或多个处理器;以及存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
根据本公开的实施例,因为采用了在符合Java Bean规范的数据存储类中通过偏移量模拟下挂结构,并通过Java Bean类的get和set方法转换数据的技术手段,所以至少部分地克服了如何创建符合Java Bean规范的支持数据下挂结构的数据存储模型的技术问题,使得在无需通过大量代码定义数据关系的前提下,实现了数据的下挂结构,同时实现了节约数据存储空间、提升数据访问效率的技术效果。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了可以应用本公开的数据转换方法和装置的示例性系统架构;
图2示意性示出了根据本公开实施例的数据转换方法的流程图;
图3A示意性示出了根据本公开另一实施例的数据转换方法的流程图;
图3B示意性示出了根据本公开实施例的计算偏移量的方法流程图;
图3C示意性示出了根据本公开另一实施例的数据转换方法的流程图
图3D示意性示出了根据本公开另一实施例的数据转换方法的流程图;
图3E示意性示出了根据本公开实施例的存储为第二数据的方法流程图;
图4示意性示出了根据本公开的实施例的数据转换装置的框图;
图5A示意性示出了根据本公开另一实施例的数据转换装置的框图;
图5B示意性示出了根据本公开实施例的计算模块的框图;
图5C示意性示出了根据本公开另一实施例的数据转换装置的框图;
图5D示意性示出了根据本公开另一实施例的数据转换装置的框图;
图5E示意性示出了根据本公开实施例的存储模块的框图;以及
图6示意性示出了根据本公开实施例的适于实现数据转换方法的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
本公开的实施例提供了一种数据转换方法和装置。该方法包括获取第一数据,第一数据包含多个节点数据,且第一数据的数据结构为下挂结构,并解析出第一数据的包含的所有节点数据,以及每个节点数据对应的节点在下挂结构中的父节点。根据每个节点的父节点,分别计算每个节点对应的节点数据的偏移量,即通过每个节点数据的偏移量表示对应节点之间的节点关系。根据每个节点的父节点,分别计算每个节点对应的节点数据的偏移量。根据每个节点数据的偏移量,分别将每个节点数据存储到数据存储类中,得到第二数据。其中,数据存储类为Java Bean类,第二数据的数据结构为下挂结构。即第二数据通过符合Java Bean规范且支持下挂结构的数据存储模型存储。
图1示意性示出了根据本公开实施例的可以应用数据转换方法和装置的示例性系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、1 02、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的数据转换方法一般可以由服务器105执行。相应地,本公开实施例所提供的数据转换装置一般可以设置于服务器105中。本公开实施例所提供的数据转换方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的数据转换装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。或者,本公开实施例所提供的数据转换装置也可以由终端设备101、102或103执行,或者也可以由不同于终端设备101、102或103的其他终端设备执行。相应地,本公开实施例所提供的数据转换装置也可以设置于终端设备101、102或103中,或设置于不同于终端设备101、102或103的其他终端设备中。
例如,待处理的层级数据可以原本存储在终端设备101、102或103中的任意一个(例如,终端设备101,但不限于此)之中,或者存储在外部存储设备上并可以导入到终端设备101中。然后,终端设备101可以在本地执行本公开实施例所提供的数据转换方法,或者将待处理的层级数据发送到其他终端设备、服务器或服务器集群,并由接收该待处理的层级数据的其他终端设备、服务器或服务器集群来执行本公开实施例所提供的数据转换方法。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图2示意性示出了根据本公开实施例的数据转换方法的流程图。
如图2所示,该方法包括操作S201~S204。
在操作S201,获取第一数据。
第一数据包含多个节点数据,且第一数据的数据结构为下挂结构。下挂结构常见于银行业务系统中的数据存储结构。在一些传统语言,例如EGL和COBOL等语言中存在以下挂结构存储数据。
例如,第一数据为符合EGL规范的数据,且第一数据的结构为下挂结构。对于EGL语言,以下挂结构存储数据的形式如下:
其中,A1、A2、B1、B2、C1、C2、C3和C4为下挂结构中的节点,每个节点存储一个节点数据。A1和A2的层级为3,B1和B2的层级为4,C1、C2、C3和C4的层级为5。其中,节点A1下挂有节点B1和节点B2,节点B1下挂有节点C1和节点C2,节点B2下挂有节点C3和节点C4。即节点A1和节点A2为一级父节点,节点B1、节点B2、节点C1、节点C2、节点C3和节点C4均为节点A1的子节点,同时,节点B1是节点C1和节点C2的二级父节点,节点C1和节点C2是节点B1的子节点。节点B2是节点C3和节点C4的二级父节点,节点C3和节点C4是节点B2的子节点。
当任一节点的节点数据发生变化时,该节点的所有父节点和所子节点的节点数据也会同步发生变化。例如,当节点B1的节点数据更新时,节点B1的父节点A1、子节点C1和子节点C2也会同步更新。
每一节点的节点数据的数据类型可以不相同,即子节点的节点类型与其父节点的节点数据的数据类型可以不相同。例如,上述例子中节点B1、C1和C2的节点数据的数据类型不相同,只有节点C1的节点数据类型为数组类型。但每一子节点都支持数组类型的节点数据,例如,节点B2、C3和C4都支持存储数组类型的节点数据,可以为节点C4添加数组定义。
例如,在银行业务数据中,节点A1的节点数据可以是用户的账号信息。节点A1下挂有节点B1和B2,节点B1的节点数据可以是该账号的开户数据,节点B2的节点数据可以是该账户的交易数据。节点B1下挂有节点C1和C2,节点C1的节点数据可以是开户的银行网点,节点C2的节点数据可以是开户的时间。节点B2下挂有节点C3和C4,节点C3的节点数据可以是取款交易数据,节点C4的节点数据可以是存款交易数据,等等。
从节点B1获取的节点数据包含其子节点C1和C2的节点数据,则当节点C1的节点数据发生更新时,其父节点B1的节点数据也会相应地更新,以保证数据的一致性。
在操作S202,解析第一数据,得到所有节点数据以及每个节点数据对应的节点在下挂结构中的父节点。
在解析第一数据后,得到第一数据包含所有节点数据以及每个节点数据对应节点的父节点。根据上述例子,可以得到节点C1的节点数据,以及节点C1的父节点包括B1和A1。
本公开提供一种解析第一数据的具体实施例:
将第一数据解析为Record类,Record类包含多个CodeRecordItem类,其中每个CodeRecordItem类包含一个节点数据的相关信息。例如,CodeRecordItem类的内容如下:
public abstract class CodeRecordItem extends CodeBase{
protected String code,id=″xxx″,idOrigin=″xxx″,comment=″xxx″,customType=″xxx″;
protected int level,type,length,offset,leveloffset,arrayCount=1;
protected boolean isArray=false;
protected CodeRecordItem masterRecord;
protected ArrayList<CodeRecordItem>subRecordSameLevel=new ArrayList<>();
protected ArrayList<Integer>alRatio=new ArrayList<>();
在解析第一数据后,还得到每个节点数据的字段名称、记录长度、数组长度、字段偏移量、父节点信息和子节点信息等。
在操作S203,根据每个节点的父节点,分别计算每个节点对应的节点数据的偏移量。
在操作S204,根据每个节点数据的偏移量,分别将每个节点数据存储到数据存储类中,得到第二数据。第二数据的数据结构为下挂结构。
在本公开实施例中,数据存储类可以是预先构建的EglRecord类,遵循Java Bean类的数据存储方式。Java Bean类中存储数据方式通常是为每个存储字段创建一个成员变量,但每个成员变量之间是等价并列的,数据之间不存在以下挂关系,每个数据之间也没有关联性。即当一个数据发生更新时,其他关联数据不会相应的发生变化。
例如,若将上述数据结构为下挂结构的EGL数据直接转换成符合Java Bean规范的数据,则转化为:
Java Bean虽然同样定义了A1、A2、B1、B2、C1、C2、C3和C4字段,但是每个字段之间没有相互关联。如B1更新时,A1却会同步更新。因此,开发人员通常会额外添加定义数据关联性的代码,实现下挂结构的更新。例如:
由于EGL和COBOL程序中往往存在复杂的下挂结构,因而导致需要额外添加大量且复杂的代码用来实现同步更新数据。大量的额外代码,不仅增加了开发人员的开发难度,还会占用大量的运行内存,影响读取数据的效率,进而影响数据的存储效率。
在本公开实施例中,计算每一节点数据的偏移量,通过偏移量表示节点之间的下挂关系,并根据每一节点数据的偏移量,将节点数据存储在符合Java Bean规范的数据存储类中,使得在Java Bean类中依然支持下挂结构的存储方式。在无需通过大量代码定义数据关系的前提下,实现了数据的下挂结构,同时节约了数据存储空间,以及提升了数据访问效率。在将存储的原始数据转换为符合Java Bean规范的数据后,可以适配于支持Java Bean的所有第三方构件,提升了数据的通用性与扩展性。
下面参考图3A~图3E,结合具体实施例对图2所示的方法做进一步说明。
图3A示意性示出了根据本公开另一实施例的数据转换方法的流程图。
如图3A所示,在根据每个节点的父节点,分别计算每个节点对应的节点数据的偏移量之前,该方法包括操作S301~S304。
在操作S301,从所有节点数据中获取所有父节点对应的节点数据;
在操作S302,分别判断每个父节点对应的节点数据是否具有数组定义;
在操作S303,若父节点对应的节点数据具有数组定义,则获取父节点数据的所有子节点对应的节点数据;
在操作S304,为所有子节点对应的节点数据分别添加数组定义。
在本公开实施例中,为保证数据读取时的一致性,若父节点的节点数据的数据类型是数组类型,则需要为该父节点的全部子节点添加数组定义,以避免在读取偏移量时,父节点与子节点的偏移量形式不一致。
还是上述数据结构为下挂结构的EGL数据为例,为子节点添加数组定义后的数据为:
由于节点B2的节点数据具有数据定义,则需要为节点B2的子节点C3和C4添加数据定义。其中,节点C3原本具有数据定义,节点C4原本不具有数据定义。
图3B示意性示出了根据本公开实施例的计算偏移量的方法流程图。
如图3B所示,根据每个节点的父节点,分别计算每个节点对应的节点数据的偏移量,包括操作S305~S306。
在操作S305,定义每个父节点对应的节点数据的第一偏移量;
在操作S306,基于第一偏移量,分别计算每个父节点的每个子节点对应的节点数据的第二偏移量,第二偏移量包含第一偏移量和子节点对应的节点数据的偏移量。
在本公开实施例中,每一节点的节点数据的偏移量与其父节点的偏移量相关。依旧以上述EGL数据的数据结构为例进行说明。
对于节点A1的节点数据,由于节点A1没有父节点,且节点A1的节点数据的数据类型不为数组类型,则节点A1的节点数据的偏移量为空,即{}。C1节点的节点数据定义了5个数组的数据,C1节点的一级父节点为节点A1,二级父节点为节点B1,节点B1节点数据的数据类型也不为数组类型。因此,对于C1节点的节点数据第2个数组数据,其偏移量应该为2。由于Java Bean规范中,数据的标号从0开始,则C1节点的节点数据第2个数组数据的偏移量应该记为{1}。
节点C4的节点数据原本并未定义数组类型,则即使在为节点C4添加数组定义后,节点C4的节点数据实际并未存储有数组数据,但在偏移量计算中任要考虑其添加的数组定义。例如,对于节点B2的第二个数组下的节点C4的节点数据而言,其偏移量记为{0,1}。其中,“0”表示C4节点的节点数据在该层级的偏移量,“1”表示其父节点B1的第二个组数的数据在该层级的偏移量。虽然节点C4在EGL数据中不属于数组数据,但是由于为节点C4增加了数组定义,所以用一个数值为0的int占位。
图3C示意性示出了根据本公开另一实施例的数据转换方法的流程图。
如图3C所示,在根据每个节点数据的偏移量,分别将每个节点数据存储到数据存储类中,得到第二数据之前,包括操作S307~S308。
在操作S307,确定第一数据包含的字段总长度。
在操作S308,基于字段总长度,在数据存储类中创建数据存储区域,数据存储区域用于存储第二数据。
在本公开实施例中,需要在数据存储内中创建用于存储第二数据的内存区域,内存区域的大小与数据的字段总长度有关。根据数据的字段总长度创建相适应的内存区域,避免占用过多的存储空间和运行空间。
依旧以上述EGL数据的数据结构为例进行说明。
节点A1和A2为一节父节点,节点A1的定义为“3A1 char(20)”,即节点A1的节点数据的总长度为20,节点A2的定义为“3A2num(10)”,即节点A2的节点数据的总长度为10。因此,该EGL数据的字段总长度为30。
图3D示意性示出了根据本公开另一实施例的数据转换方法的流程图。
如图3D所示,在根据每个节点数据的偏移量,分别将每个节点数据存储到数据存储类中,得到第二数据之前,包括操作S309。
在操作S309,为所有节点在数据存储类中创建对应的字段名称,字段名称与数据存储类的存储规范相适应。
在本公开实施例中,为每一个节点在数据存储类中创建对应的字段名称。由于原始的第一数据和第二数据的存储方式遵循不同的数据规范,第一数据中的节点名称的命名方式与第二数据的节点名称的命名方式不一定相同。因此,在将每个节点数据存储到数据存储类之前,需要在数据存储类中为每一个节点创建一个对应的字段名称。例如,第一数据的节点名称为A1,第二数据中该节点对应的字段名称为α1。本领域的技术人员可根据实际需要遵循的数据存储规范创建相应的字段名称,本实施例所示例子仅为示例性说明,并对具体的创建方法不作限定。
创建后的字段名称与第一数据的节点名称可以通过Hashmap建立对应关系。例如,需要获取数据存储类中α1的节点数据中,相应地在第一数据中获取节点A1的节点数据。
通过Hashmap建立对应关系,例如:
private HashMap<String,CodeRecordItem>hmIndex=new HashMap<>();
图3E示意性示出了根据本公开实施例的存储为第二数据的方法流程图。
如图3E所示,根据每个节点数据的偏移量,分别将每个节点数据存储到数据存储类中,得到第二数据,包括操作S310~S311。
在操作S310,根据每个节点数据的偏移量,通过get函数获取所有节点数据。
在操作S311,根据每个节点数据的偏移量,通过set函数将所有节点数据存储到数据存储类中。
在本公开实施例中,由于数据存储类遵循Java Bean的规范,则数据存储类包含预先构建的get函数和set函数。通过get函数获取第一数据中每一节点的节点数据,以及通过set函数将获取的节点数据存储进数据存储类中。
例如,get函数为public String get(String id,int[]arrayIndex){。set函数为public void set(String id,int[]arrayIndex,Object value){。
其中,id表示字段名称,arrayIndex表示包含父节点的数组偏移,Object value为数据变量,即在get函数获取到的具体数据值,将该数据值赋值为Object value。
通过hmIndex获取到节点数据对应的CodeRecordItem类,在获取该节点数据的字段偏移量,及alRatio。根据字段偏移,alRatio以及get方法的参数arrayIndex,计算节点数据最终偏移量,并获取该节点数据。
依旧以上述EGL数据的数据结构为例进行说明。
若获取节点A1的节点数据,则get函数具有为:
record_Name.get(″A1″,new int[]{});
若获取A1.B1.C1[2]的节点数据,即获取节点C1的第二个数组数据,则get函数具有为:
record_Name.get(″A1_B1_C1″,new int[]{1});
若要获取A1.B2[2].C3[3]的节点数据,即获取节点B2的第二个数组数据下的节点C3的第三个数组数据,则get函数具有为:
record_Name.get(″A1_B2_C3″,new int[]{2,1});
若要获取A1.B2[2].C4的节点数据,即获取节点B2的第二个数组数据下的节点C4的节点数据,则get函数具有为:
record_Name.get(″A1_B2_C4″,new int[]{0,1});
若要将A1.B2[2].C4的节点数据存储在数据存储类中,则set函数具有为:
public void set(A1_B2_C4,int[]{0,1},Object value){
set函数与get函数类似,本公开实施例不再赘述。
还需要说明的是,对于数组的字段,通过alRatio变量记录节点的节点数据的数组长度值,alRatio变量的数值包括节点的父节点的数组长度。在操作S304为所有子节点对应的节点数据分别添加数组定义之后计算,计算节点数据的长度。
依旧以上述EGL数据的数据结构为例进行说明。
节点C1的父节点的节点数据不是数组数据,则节点C1的数组长度不包含父节点的数组长度值,即C1的alRatio为{1}。节点C3的父节点B2的节点数据为数组数据,节点C3的数组长度为1,父节点B2的数组长度为10,所以C3的alRatio为{1,10}。节点C4虽然在原EGL数据中不属于数组,但是由于已补充数组定义,所以C4的alRatio为{5,10}。
图4示意性示出了根据本公开的实施例的数据转换装置的框图。
如图4所示,数据转换装置400包括第一获取模块401、解析模块402、计算模块403和存储模块404。
第一获取模块401,用于获取第一数据,第一数据包含多个节点数据,第一数据的数据结构为下挂结构。
解析模块402,用于解析第一数据,得到所有节点数据以及每个节点数据对应的节点在下挂结构中的父节点
计算模块403,用于根据每个节点的父节点,分别计算每个节点对应的节点数据的偏移量;
存储模块404,用于根据每个节点数据的偏移量,分别将每个节点数据存储到数据存储类中,得到第二数据,第二数据的数据结构为下挂结构。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,身第一获取模块401、解析模块402、计算模块403和存储模块404中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,第一获取模块401、解析模块402、计算模块403和存储模块404中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块401、解析模块402、计算模块403和存储模块404中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
下面参考图5A~图5E,结合具体实施例对图4所示的方法做进一步说明。
图5A示意性示出了根据本公开另一实施例的数据转换装置的框图。
如图5A所示,装置400还包括:
第二获取模块405,用于从所有节点数据中获取所有父节点对应的节点数据;
判断模块406,用于分别判断每个父节点对应的节点数据是否具有数组定义;
第三获取模块407,用于若父节点对应的节点数据具有数组定义,则获取父节点的所有子节点对应的节点数据;
添加模块408,用于为所有子节点对应的节点数据分别添加数组定义。
图5B示意性示出了根据本公开实施例的计算模块装置的框图。
如图5B所示,计算模块403包括:
定义单元4301,用于定义每个父节点对应的节点数据的第一偏移量;
计算单元4302,用于基于第一偏移量,分别计算每个父节点的每个子节点对应的节点数据的第二偏移量,第二偏移量包含第一偏移量和子节点对应的节点数据的偏移量。
图5C示意性示出了根据本公开另一实施例的数据转换装置的框图。
如图5C所示,装置400还包括:
确定模块409,用于确定第一数据包含的字段总长度;
第一创建模块410,用于基于字段总长度,在数据存储类中创建数据存储区域,数据存储区域用于存储第二数据。
图5D示意性示出了根据本公开另一实施例的数据转换装置的框图。
如图5D所示,装置400还包括:
第二创建模块411,用于为所有节点在数据存储类中创建对应的字段名称,字段名称与数据存储类的存储规范相适应
图5E示意性示出了根据本公开实施例的存储模块的框图。
如图5E所示,存储模块404包括:
获取单元4401,用于根据每个节点数据的偏移量,通过get函数获取所有节点数据;
存储单元4402,用于根据每个节点数据的偏移量,通过set函数将所有节点数据存储到数据存储类中。
需要说明的是,本公开的实施例中数据转换装置部分与本公开的实施例中数据转换方法部分是相对应的,数据转换装置部分的描述具体参考数据转换方法部分,在此不再赘述。
图6示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的框图。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,根据本公开实施例的电子设备600包括处理器601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 603中,存储有电子设备600操作所需的各种程序和数据。处理器601、ROM602以及RAM 603通过总线604彼此相连。处理器601通过执行ROM 602和/或RAM 603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 602和RAM 603以外的一个或多个存储器中。处理器601也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备600还可以包括输入/输出(I/O)接口605,输入/输出(I/O)接口605也连接至总线604。电子设备600还可以包括连接至I/O接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 602和/或RAM 603和/或ROM 602和RAM 603以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,上述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框,以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (12)

1.一种数据转换方法,包括:
获取第一数据,所述第一数据包含多个节点数据,所述第一数据的数据结构为下挂结构;
解析所述第一数据,得到所有节点数据以及每个所述节点数据对应的节点在所述下挂结构中的父节点;
根据每个所述节点的所述父节点,分别计算每个所述节点对应的节点数据的偏移量;
根据每个所述节点数据的所述偏移量,分别将每个所述节点数据存储到数据存储类中,得到第二数据,所述第二数据的数据结构为所述下挂结构,所述数据存储类为JavaBean类;
其中,所述根据每个所述节点的所述父节点,分别计算每个所述节点对应的节点数据的偏移量,包括:
定义每个所述父节点对应的节点数据的第一偏移量;
基于所述第一偏移量,分别计算每个所述父节点的每个子节点对应的节点数据的第二偏移量,所述第二偏移量包含所述第一偏移量和所述子节点对应的节点数据的偏移量。
2.根据权利要求1所述的方法,其中,在所述根据每个所述节点的所述父节点,分别计算每个所述节点对应的节点数据的偏移量之前,所述方法包括:
从所有节点数据中获取所有父节点对应的节点数据;
分别判断每个父节点对应的节点数据是否具有数组定义;
若存在父节点对应的节点数据具有数组定义,则获取所述父节点的所有子节点对应的节点数据;
为所述所有子节点对应的节点数据分别添加数组定义。
3.根据权利要求1所述的方法,其中,在所述根据每个所述节点数据的所述偏移量,分别将每个所述节点数据存储到数据存储类中,得到第二数据之前,所述方法包括:
确定所述第一数据包含的字段总长度;
基于所述字段总长度,在所述数据存储类中创建数据存储区域,所述数据存储区域用于存储所述第二数据。
4.根据权利要求1所述的方法,其中,所述数据存储类包含预先构建的get函数和set函数,所述根据每个所述节点数据的所述偏移量,分别将每个所述节点数据存储到数据存储类中,得到第二数据,包括:
根据每个所述节点数据的所述偏移量,通过get函数获取所有节点数据;
根据每个所述节点数据的所述偏移量,通过set函数将所述所有节点数据存储到数据存储类中。
5.根据权利要求1所述的方法,其中,在所述根据每个所述节点数据的所述偏移量,分别将每个所述节点数据存储到数据存储类中,得到第二数据之前,所述方法包括:
为所有节点在所述数据存储类中创建对应的字段名称,所述字段名称与所述数据存储类的存储规范相适应。
6.一种数据转换装置,包括:
第一获取模块,用于获取第一数据,所述第一数据包含多个节点数据,所述第一数据的数据结构为下挂结构;
解析模块,用于解析所述第一数据,得到所有节点数据以及每个所述节点数据对应的节点在所述下挂结构中的父节点;
计算模块,用于根据每个所述节点的所述父节点,分别计算每个所述节点对应的节点数据的偏移量;
存储模块,用于根据每个所述节点数据的所述偏移量,分别将每个所述节点数据存储到数据存储类中,得到第二数据,所述第二数据的数据结构为所述下挂结构,所述数据存储类为Java Bean类;
其中,所述计算模块包括:
定义单元,用于定义每个所述父节点对应的节点数据的第一偏移量;
计算单元,用于基于所述第一偏移量,分别计算每个所述父节点的每个子节点对应的节点数据的第二偏移量,所述第二偏移量包含所述第一偏移量和所述子节点对应的节点数据的偏移量。
7.根据权利要求6所述的装置,所述装置还包括:
第二获取模块,用于从所有节点数据中获取所有父节点对应的节点数据;
判断模块,用于分别判断每个父节点对应的节点数据是否具有数组定义;
第三获取模块,用于若所述父节点对应的节点数据具有数组定义,则获取所述父节点的所有子节点对应的节点数据;
添加模块,用于为所述所有子节点对应的节点数据分别添加数组定义。
8.根据权利要求6所述的装置,所述装置还包括:
确定模块,用于确定所述第一数据包含的字段总长度;
第一创建模块,用于基于所述字段总长度,在所述数据存储类中创建数据存储区域,所述数据存储区域用于存储所述第二数据。
9.根据权利要求6所述的装置,所述存储模块包括:
获取单元,用于根据每个所述节点数据的所述偏移量,通过get函数获取所有节点数据;
存储单元,用于根据每个所述节点数据的所述偏移量,通过set函数将所述所有节点数据存储到数据存储类中。
10.根据权利要求6所述的装置,所述装置还包括:
第二创建模块,用于为所有节点在所述数据存储类中创建对应的字段名称,所述字段名称与所述数据存储类的存储规范相适应。
11.一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1至5中任一项所述的方法。
CN202110542975.7A 2021-05-18 2021-05-18 数据转换方法、装置、电子设备以及存储介质 Active CN113515326B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110542975.7A CN113515326B (zh) 2021-05-18 2021-05-18 数据转换方法、装置、电子设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110542975.7A CN113515326B (zh) 2021-05-18 2021-05-18 数据转换方法、装置、电子设备以及存储介质

Publications (2)

Publication Number Publication Date
CN113515326A CN113515326A (zh) 2021-10-19
CN113515326B true CN113515326B (zh) 2024-02-06

Family

ID=78064464

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110542975.7A Active CN113515326B (zh) 2021-05-18 2021-05-18 数据转换方法、装置、电子设备以及存储介质

Country Status (1)

Country Link
CN (1) CN113515326B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102682112A (zh) * 2012-05-11 2012-09-19 华为技术有限公司 存储方法和装置
CN107491305A (zh) * 2017-08-10 2017-12-19 深圳市华傲数据技术有限公司 数据分析及可视化处理方法、装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170124214A1 (en) * 2015-10-28 2017-05-04 International Business Machines Corporation Determining data field offsets using a document object model representation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102682112A (zh) * 2012-05-11 2012-09-19 华为技术有限公司 存储方法和装置
CN107491305A (zh) * 2017-08-10 2017-12-19 深圳市华傲数据技术有限公司 数据分析及可视化处理方法、装置

Also Published As

Publication number Publication date
CN113515326A (zh) 2021-10-19

Similar Documents

Publication Publication Date Title
US9420034B2 (en) Providing services to multiple tenants of an application
CN114172966B (zh) 单元化架构下的服务调用方法、服务处理方法及装置
CN113032244B (zh) 接口测试方法、装置、计算机系统和计算机可读存储介质
CN110825499B (zh) 基于统一容器云平台的安全隔离的实现方法及装置
CN110109983B (zh) 一种操作Redis数据库的方法和装置
US20140052851A1 (en) Systems and methods for discovering sources of online content
CN112965916B (zh) 页面测试方法、页面测试装置、电子设备及可读存储介质
CN113176907A (zh) 接口数据调用方法、装置、计算机系统及可读存储介质
CN115809056B (zh) 组件复用实现方法、装置和终端设备、可读存储介质
CN113515326B (zh) 数据转换方法、装置、电子设备以及存储介质
CN116483888A (zh) 程序评估方法及装置、电子设备和计算机可读存储介质
CN111414154A (zh) 前端开发的方法、装置、电子设备和存储介质
CN111158777A (zh) 组件调用方法、装置及计算机可读存储介质
CN114677114A (zh) 基于图形拖拽的审批流程生成方法及装置
CN114328435A (zh) 一种基于分布式架构的非结构化文件的流处理方法及系统
CN114780361A (zh) 日志生成方法、装置、计算机系统及可读存储介质
CN113392311A (zh) 字段搜索方法、字段搜索装置、电子设备及存储介质
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
CN114640585B (zh) 一种资源更新方法、装置、电子设备和存储介质
CN113535565B (zh) 一种接口用例生成方法、装置、设备和介质
CN113254114B (zh) 区块链系统的运行方法、装置、设备和存储介质
CN112817573B (zh) 用于构建流式计算应用的方法、装置、计算机系统和介质
CN116700745A (zh) 基于容器云平台的应用部署方法、装置、电子设备和介质
CN116737693A (zh) 数据迁移方法及装置、电子设备和计算机可读存储介质
CN113760466A (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