掌桥专利:专业的专利平台
掌桥专利
首页

一种程序数据结构的表格化构建方法

文献发布时间:2023-06-19 19:16:40


一种程序数据结构的表格化构建方法

技术领域

本发明涉及计算机数据结构构建的技术领域,更具体地,涉及一种程序数据结构的表格化构建方法。

背景技术

将多种数据类型组合为一个数据集是计算机程序编写最常涉及的技术,这中间涉及到不同的计算机语言(如xml、JSON等)的利用,而不同的计算机语言的数据结构表达方式不一样。

如JSON,计算机编程人员在利用JSON语言进行代码编写的过程中,依据JSON语法手写代码直接构建JSON数据结构,且为便于阅读,将JSON数据的块状代码进行分行分段格式化,但这种手写代码直接进行数据构建的方式,耗时长,效率低且共享性差,主要是因为在较大数据量的JSON数据进行数据结构构建时,计算机编程人员会因数据结构的不清晰,多次重复查看并确认数据结构的合理性、一致性和完整性,造成效率低;另外,每个计算机编程人员构建JSON数据结构的方式不一样(例如同样的键名,每个人理解的含义不一样),所以,在进行数据共享时,会出现理解障碍或者语义误会。如何来快速构建复杂的数据结构以达到易定义、易读、易维护、易传播的目的,是一项亟待解决的技术问题。

现有技术中公开了一种进行数据格式转化的方法和装置的方案,在该方案中,首先,用户通过手动输入配置或读取其它API构建字典,字典有一定的要求:由必须包含两个属性的映射对组成,然后构建含有一个元素的具有映射关系的字典生成二维表的列(定义几个字典,就会生成几列),其中,映射关系中的显示名称为列名且第一列为行标识列;其次,根据在内容列填写的内容属性为每列预先设置好操作类型(包括单填、单选、多填、多选、映射),不同的操作类型对应的数据类型和最终得到的JSON数据结构会有所不同,在设置完成后,用户根据实际需要输入列相关内容,最后,利用解析程序,根据列的操作类型和数据类型来获知对应的JSON内容,进而生成JSON结构的数据。但该方案仅实现了用单个表格的方式来定义JSON数据结构,功能比较单一,且必须构建相关字典,字典与表格的列进行绑定和操作类型确定,再构建一个二维表并输入内容,然后才根据创建的二维表,通过其内置的方法转换为标准JSON数据结构,对非技术人员而言,构建JSON数据仍需要一定的数据结构基础,对专业编程技术人员而言,则显得过于复杂。此外,这种方式通用性差,只能通过一个二维表来创建JSON数据结构,基于二维表的固化性,相对来说JSON数据结构也比较固定,并不能构建任意的JSON数据结构,且只是针对JSON数据结构的最外层结构实现表格化,且表格内容展示不全面,二维表展示的内容形式全是中文名称(即显示名称)与JSON值,其代码名称仍需要通过字典查看。

发明内容

为解决当前数据结构构建方式效率低、结构不清晰的问题,本发明提出了一种程序数据结构的表格化构建方法,以表格化的方式输出数据结构,直观高效,结构清晰,数据结构输出出错机率低,便于理解与交流。

为了达到上述技术效果,本发明的技术方案如下:

一种程序数据结构的表格化构建方法,所述方法包括以下步骤:

S1.确定每一种基本数据类型对应的基本表结构;

S2.根据所需构建的数据类型,选择相应的基本表结构作为父项表格,动态构建html元素代码,并根据数据结构内部的数据类型,在父项表格中嵌套相应数据类型对应的表格结构;

S3.提取表格结构的元素代码,从外到内逐步遍历表格元素,构建表格的数组结构;

S4.对数组结构中的所有子项逐层遍历,创建对像或数组,得到程序的数据结构或程序数据。

本技术方案首先确定每一种基本数据类型对应的基本表结构,以表格化的方式直观表示计算机编程常用的数据类型,有利于技术人员或非技术人员对程序结构的理解及阅读,提高了效率,然后通过在父项表格中嵌套表格结构,组合得到多维表以表达任意一种、不同复杂程度的数据结构,从而更进一步的基于表格化的方式清晰展示数据结构,数据结构输出出错机率低,易于理解、交流。

优选地,步骤S1中所述的数据类型包括:键值对象、一维数组和二维数组。

优选地,当数据类型为键值对象时,其对应的基本表结构利用多行两列子表表示,每一行表示对象的一个键值对,其中,行的第一个输入框映射代码的键,在输入框中记录键的中文名称及在隐藏域中记录本键的相关详细说明;行的第二个输入框映射键的值,该值为字符串、数字、对象或数组。

在此,可以在表格的代码点位输入框同步显示中文名称及在隐藏域中记录本键的相关详细说明,更有利于技术人员或非技术人员对结构的理解与阅读。

优选地,当数据类型为一维数组时,其对应的基本表结构利用两行多列子表表示,其中,第一行为标题列,第一行的每一列按顺序映射数组的下标代号,在每一列备注数组的下标及对应的中文名称,以便明确所定义数组的含义;第二行映射一维数组的输入值,其值为字符串、数字、对像或数组。

优选地,当数据类型为二维数组时,其对应的基本表结构利用多行多列子表表示,第一行为标题列,第一行的每一列按顺序映射数组的下标代号,在每一列备注数组的下标及对应的中文名称,以便明确所定义数组的含义;表的行数能无限增加,第二行及新增的行均用于记录二维数组的值,从第二行起,按行顺序,每一行对应构成二维数组的一个一维数组值,其值为字符串、数字、对像或数组。

优选地,步骤S2中所述所需构建的数据类型包括:键值对象、一维数组和二维数组,根据所需创建的数据类型,选择相应的基本表结构作为父项表格,根据父项表格的输入框所需创建的数据类型,分别动态构建html元素代码,并嵌套在父项表格的输入框中,得到相应程序数据结构的嵌套表格。

在此,相比于现有方案中结构单一的问题,基于三种基本表结构,并通过表格的嵌套可以构建任意的一种程序数据结构,并实现了程序数据结构的全表格式表达。

优选地,在步骤S3中,从外到内逐层遍历表格元素,构建出嵌套结构的数组结构的过程为:

S31.获取当前父项表格对应的数据类型,确认程序类型为键值对象、一维数组还是二维数组;

S32.继续查找是否具备嵌套的下级,构建出嵌套结构的数组格式为:['键id','键名称','类型','说明','默认值','样式','事件',[下级结构]];

S33.按从外到内的表格层次顺序执行步骤S31~S32,直至遍历完成,得到最终的嵌套表格的数组结构。

优选地,在步骤S4中,对数组中的所有子项结构逐层遍历,从获取的结构类型开始,创建对象或数组,当为对象时,创建键值对,当为数组时,创建数组的每一项,当下级项仍是对象或数组时,重复上述操作,最终得到的数据结构与数组结构一致。

在此,得到的数组结构是为了记录并存储表格结构的信息,数据结构是表格输入的内容。

优选地,在步骤S3之后还包括:以构建出嵌套表格的数组结构为基础,调用所需事件方法,形成程序数据表格结构,然后在表格中填入程序数据值,根据填入的程序数据值,调用事件方法生成程序数据,具体过程为:

提取表格中的程序代码结构,在嵌套表格元素中逐层遍历,首先获取当前表格的数据类型,确认数据类型是键值对象、一维数组还是二维数组,创建相应的数据对象,当不存在下级时,直接取出表格中所填写的值赋值给当前键;当为嵌套表格时,遍历取出下级的对象值赋值给当前键。

在此,此操作是构建程序数据,程序数据包含了程序数据结构,不仅支持从零开始表格化构建结构,也支持直接引用表格化结构模板,即有表格化结构但表格输入框内没有内容,在应用的基础上,还可以再修改结构。实际应用中,如定义了很多的API接口,方法参数应用的结构大致都是一样的,就不用每定义一个接口就再重新去定一个同样的结构,可以直接应用原定义结构。

优选地,对当前已有的程序结构,进行表格化转化构建,过程为:

将当前已有的程序结构代码转成内存对象,再将对象逐层遍历,解构获取数据类型,根据数据类型是键值对象、一维数组还是二维数组、有无下级结构,构建出结构数组格式如下:['键id','键名称','类型','说明','默认值','样式','事件',[下级结构数组]];

遍历完成后,得到最终的结构数组;

遍历最终形成的结构数组,根据所属的结构类型按键值对象、一维数组、二维数组3种数据类型,构建表格结构代码,其中,对象表格构建为横向两列多行子表结构,一维数组构建为竖向两行多列子表结构,二维数组构建为竖向多行多列子表结构,最终,构建成一个嵌套的表格结构,实现将已有的程序结构表格化。

与现有技术相比,本发明技术方案的有益效果是:

本发明提出一种程序数据结构的表格化构建方法,首先确定每一种基本数据类型对应的基本表结构,以表格化的方式直观表示计算机编程常用的数据类型,有利于对程序结构的理解及阅读,提高了效率,然后通过在父项表格中嵌套表格结构,组合得到多维表以表达任意一种、不同复杂程度的数据结构,从而更进一步的基于表格化的方式清晰展示数据结构,数据结构输出出错机率低,易于理解、交流。

附图说明

图1表示本发明实施例1中提出的程序数据结构的表格化构建方法的流程图;

图2表示本发明实施例1中提出的当数据类型为键值对象时,其对应的基本表结构利用多行两列子表表示的示意图;

图3表示本发明实施例1中提出的当数据类型为一维数组时,其对应的基本表结构利用两行多列子表表示的示意图;

图4表示本发明实施例1中提出的当数据类型为二维数组时,其对应的基本表结构利用多行多列子表表示的示意图;

图5表示本发明实施例1中提出的在父项表格中嵌套表格结构,组合得到多维表的嵌套表格结构的示意图;

图6表示本发明实施例2中提出的平台内容编辑区的界面示意图;

图7表示本发明实施例2中提出的定义的json表格的示意图;

图8表示本发明实施例3中提出的以定义的嵌套表格的数组结构为基础,形成带有程序数值的程序数据表格结构的示意图;

图9表示本发明实施例4中提出的针对已有的json结构或数据,创建的表格结构示意图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

为了更好地说明本实施例,附图某些部位会有省略、放大或缩小,并不代表实际尺寸;

对于本领域技术人员来说,附图中某些公知内容说明可能省略是可以理解的。

下面结合附图和实施例对本发明的技术方案做进一步的说明;

附图中描述位置关系的仅用于示例性说明,不能理解为对本专利的限制;

实施例1

如图1所示,本实施例提出了一种程序数据结构的表格化构建方法,该方法包括以下步骤:

S1.确定每一种基本数据类型对应的基本表结构;

S2.根据所需构建的数据类型,选择相应的基本表结构作为父项表格,动态构建html元素代码,并根据数据结构内部的数据类型,在父项表格中嵌套相应数据类型对应的表格结构;

S3.提取表格结构的元素代码,从外到内逐步遍历表格元素,构建表格的数组结构;

S4.对数组结构中的所有子项逐层遍历,创建对像或数组,得到程序的数据结构或程序数据。

本实施例首先确定每一种基本数据类型对应的基本表结构,以表格化的方式直观表示计算机编程常用的数据类型,有利于技术人员或非技术人员对程序结构的理解及阅读,提高了效率,然后通过在父项表格中嵌套表格结构,组合得到多维表以表达任意一种、不同复杂程度的数据结构,从而更进一步的基于表格化的方式清晰展示数据结构,数据结构输出出错机率低,易于理解、交流。

不同的计算机语言,其数据结构的表达方式不一样,如xml、json等,在本实施例中,以json数据为示例,但不限于构建json数据,同理可以构建xml数据及其它在计算机领域需要用到的同类似的数据结构。任何复杂的数据结构,都基本包含了三类基本数据类型:键值对象、一维数组和二维数组;当数据类型为键值对象时,如图2所示,其对应的基本表结构利用多行两列子表表示,每一行表示对象的一个键值对,其中,行的第一个输入框映射代码的键,在输入框中记录键的中文名称及在隐藏域中记录本键的相关详细说明,更有利于技术人员或非技术人员对结构的理解与阅读,如产品编号;行的第二个输入框映射键的值,该值为字符串、数字、对象或数组,如xj-001。

如图3所示,当数据类型为一维数组时,其对应的基本表结构利用两行多列子表表示,其中,第一行为标题列,如“登录用户”、“ip地址”、“登录时间”,第一行的每一列按顺序映射数组的下标代号,如[0]、[1]及[2],在每一列备注数组的下标对应的中文名称,以便明确所定义数组的含义;第二行映射一维数组的输入值,其值为字符串、数字、对像或数组。

如图4所示,当数据类型为二维数组时,其对应的基本表结构利用多行多列子表表示,第一行为标题列,如“产线”、“产品编号”及“生产状态”,第一行的每一列按顺序映射数组的下标代号,如[0]、[1]及[2],在每一列备注数组的下标对应的中文名称,以便明确所定义数组的含义;表的行数能无限增加,第二行及新增的行均用于记录二维数组的值,从第二行起,按行顺序,每一行对应构成二维数组的一个一维数组值,其值为字符串、数字、对像或数组。

在上述基本表结构的基础上,如果表中的输入值是一个对像或者是一个一维数组、或者是一个二维数组,同样的根据值类型所对应的表格,可以将相应的表格嵌套在父项表格的输入框中,步骤S2中所述所需构建的数据类型包括:键值对象、一维数组和二维数组,根据所需创建的数据类型,选择相应的基本表结构作为父项表格,根据父项表格的输入框所需创建的数据类型,分别动态构建html元素代码,并嵌套在父项表格的输入框中,得到相应程序数据结构的嵌套表格。

在此处,基于三种基本表结构,并通过表格的嵌套可以构建任意的一种程序数据结构,以图5所示的为例,图5中作为父项表格的是4行2列的基本表结构,基本表结构中的第一列是“企业名称”、“企业id”、“员工”及“部门结构”,第二列依次是第一列对应的值,其中在“员工”和“部门结构”对应的输入框中分别嵌套了一个基本表结构,在作为嵌套的基本表结构中还嵌套了基本表结构,所有的内容,实现了程序数据结构的全表格式表达,以表格化代替代码化,通过表格结构一目了然。

本实施例提出的方法在实际应用中,首先进入平台的编辑界面,如图6所示,编辑装置各功能健绑定了所需的各种事件方法,以实现在内容编辑区定义json表格,表格化的目的是清晰的表达json的结构,在这一步中,根据内容输入框所需创建的数据类型,分别动态构建html元素代码形成相应的表格,得到如图7所示的json表格,然后将定义的json表格转译为一组代码结构,作为表格结构的存储信息,以便今后使用,其与定义的json表格通过事件方法可以互为转换,在该过程中,执行以下:

从外到内逐层遍历表格元素,构建出嵌套结构的数组结构的过程为:

S31.获取当前父项表格对应的数据类型,确认程序类型为键值对象、一维数组还是二维数组;

S32.继续查找是否具备嵌套的下级,构建出嵌套结构的数组格式为:['键id','键名称','类型','说明','默认值','样式','事件',[下级结构]];

S33.按从外到内的表格层次顺序执行步骤S31~S32,直至遍历完成,得到最终的嵌套表格的数组结构:['JSON结构id','JSON结构名称','JSON结构类型','JSON加载事件',[JSON数据结构数组]],具体为:

["","","oj","",[["User","员工","oj","","","","",[["UserName","姓名","sw","","","","",""],["UserID","员工id","sw","","","","",""]]],["WorkExper","工作经历","ab","","","","",[["0","职位","sw","","","","",""],["1","时间","sw","","","","",""]]],["Department","部门","aa","","","","",[["0","部门id","sw","","","","",""],["1","部门职位","sw","","","","",""]]]]]

最后以表格化的方式定义json结构,对数组中的所有子项结构逐层遍历,从获取的结构类型开始,创建对象或数组,当为对象时,创建键值对,当为数组时,创建数组的每一项,当下级项仍是对象或数组时,重复上述操作,最终得到的数据结构与数组结构一致,如下:

{

"User":{

"UserName":"",

"UserID":""

},

"WorkExper":["",""],

"Department":["",""]

}

实施例2

本实施例主要实现:调用已定义的表格化json结构输出json数据。

获取已定义好的json表结构代码,调用事件形成如右图7所示的json表格结构,以构建出嵌套表格的数组结构为基础,调用所需事件方法,形成程序数据表格结构,然后在表格中填入程序数据值,根据填入的json程序数据值,填入json程序数据值的结构如图8所示,调用事件方法生成程序数据,具体过程为:

提取表格中的程序代码结构,在嵌套表格元素中逐层遍历,首先获取当前表格的数据类型,确认数据类型是键值对象、一维数组还是二维数组,创建相应的数据对象,当不存在下级时,直接取出表格中所填写的值赋值给当前键;当为嵌套表格时,遍历取出下级的对象值赋值给当前键,最终的形成的对象与值如下所示:

{

"User":{

"UserID":"sc01-0001",

"UserName":"张三"

},

"WorkExper":[["生产员","2017-08-03-至今"]],

"Department":["sc01","一组生产员"]

}

该方式不仅支持从零开始表格化构建结构,也支持直接引用表格化结构模板,即有表格化结构但表格输入框内没有内容,在应用的基础上,还可以再修改结构。实际应用中,如定义了很多的API接口,方法参数应用的结构大致都是一样的,就不用每定义一个接口就再重新去定一个同样的结构,可以直接应用原定义结构。

实施例3

本实施例主要实现:根据已有的json结构或json数据,创建相应的表格结构,首先通过专用输入装置,复制标准json数据结构或者直接输入json结构,设标准json数据结构如下:

{

"User":{

"UserName":"",

"UserID":""

},

"WorkExpe":["",""],

"Department":["",""],

"sw2":["",""]

}

根据输入的标准json数据结构,调用事件方法转译为相应的表格化json结构。对当前已有的程序结构,进行表格化转化构建,过程为:

将当前已有的程序结构代码转成内存对象,再将对象逐层遍历,解构获取数据类型,根据数据类型是键值对象、一维数组还是二维数组、有无下级结构,构建出结构数组格式如下:['键id','键名称','类型','说明','默认值','样式','事件',[下级结构数组]];

遍历完成后,得到最终的结构数组;

遍历最终形成的结构数组,根据所属的结构类型按键值对象、一维数组、二维数组3种数据类型,构建表格结构代码,其中,对象表格构建为横向两列多行子表结构,一维数组构建为竖向两行多列子表结构,二维数组构建为竖向多行多列子表结构,最终,构建成一个嵌套的表格结构如图9所示,实现将已有的程序结构表格化。

显然,本发明的上述实施例仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

技术分类

06120115856763