首页 / 专利库 / 人工智能 / 树形结构 / 一种基于树形结构的Sql结果集向Json数据转换的方法

一种基于树形结构的Sql结果集向Json数据转换的方法

阅读:631发布:2020-05-12

专利汇可以提供一种基于树形结构的Sql结果集向Json数据转换的方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于 树形结构 的Sql结果集向Json数据转换的方法,属于数据格式转换技术领域。本发明的基于树形结构的Sql结果集向Json数据转换的方法,该方法获取sql结果集,定义一个字符串变量root,同时引入一个键值对数组,其中主键为 节点 编号,内容为该节点的直属 子节点 集合,继续循环钻取后续数据,若节点编号已存在,则替换除节点编号和children之外的属性,若节点编号不存在,则把数据封装后存入到键值对数组中,插入时同样缓存 父节点 编号。该发明的基于树形结构的Sql结果集向Json数据转换的方法能有效的解决sql结果集格式数据的过渡问题,具有很好的推广应用价值。,下面是一种基于树形结构的Sql结果集向Json数据转换的方法专利的具体信息内容。

1.一种基于树形结构的Sql结果集向Json数据转换的方法,其特征在于:该方法获取sql结果集,定义一个字符串变量root,同时引入一个键值对数组,其中主键为节点编号,内容为该节点的直属子节点集合,继续循环钻取后续数据,若节点编号已存在,则替换除节点编号和children之外的属性,若节点编号不存在,则把数据封装后存入到键值对数组中,插入时同样缓存父节点编号,若父节点编号为空,则把父节点编号存入root,若父节点编号不为空,在键值对数组中找到节点编号为父节点编号的元素,若找不到,则添加一个主键为父节点编号的空节点,再将当前节点编号赋值到其父节点编号的children属性中,构建起树;
从字符串root的节点集合开始,根据存有所有节点基础数据的键值对数组,对每一个树节点进行迭代赋值,生成json数据串。
2.根据权利要求1所述的基于树形结构的Sql结果集向Json数据转换的方法,其特征在于:该方法具体包括以下步骤:
S1、从数据库读取到待展示的sql结果集,将结果集的每个记录路径字段数据转换为双亲表示法;
S2、采用步骤S1得到的结果集,定义字符串变量root,并引入一个键值对数组kv,对结果集的每行记录做处理,构建起树;
S3、根据构建的树,对每一个树节点进行迭代赋值,生成json数据集。
3.根据权利要求2所述的基于树形结构的Sql结果集向Json数据转换的方法,其特征在于:步骤S2中,初始化字符串变量root和键值对数组kv为空,则开始遍历sql结果集。
4.根据权利要求3所述的基于树形结构的Sql结果集向Json数据转换的方法,其特征在于:取出行记录x,在键值对数组kv中查找与x对应的原始y,若存在y,在键值对kv中覆盖y的除id和children之外的属性,否则将行记录x保存到kv中。
5.根据权利要求4所述的基于树形结构的Sql结果集向Json数据转换的方法,其特征在于:判断x的父节点id是否为空,若为空,则将x的id添加到root中,并继续取出行记录x,在键值对数组kv中查找与x对应的原始y,否则在键值对数组kv中查找id与x的父节点id相同的元素z。
6.根据权利要求5所述的基于树形结构的Sql结果集向Json数据转换的方法,其特征在于:判断元素z是否存在,若存在则将x的id添加到z的children属性的末尾,否则添加一个id为x的父节点id,children为x的id,属性为空的新元素到键值对数组kv中。
7.根据权利要求6所述的基于树形结构的Sql结果集向Json数据转换的方法,其特征在于:判断是否存在下一行记录,若存在则继续取出行记录x,在键值对数组kv中查找与x对应的原始y,否则结束。
8.根据权利要求7所述的基于树形结构的Sql结果集向Json数据转换的方法,其特征在于:所述sql数据集包括但不限于关系型数据库中java、.net、C、C++得到的结果集。

说明书全文

一种基于树形结构的Sql结果集向Json数据转换的方法

技术领域

[0001] 本发明涉及数据格式转换技术领域,具体提供一种基于树形结构的Sql结果集向Json数据转换的方法。

背景技术

[0002] 树是一种十分重要的数据结构,在实际的生活中也有着广泛的应用,比如人事管理、组织机构等等。Web应用中对树结构的引用一般采用json格式,这种格式在形式上保留了树节点一对多的关系特点。而在关系型数据库中,sql结果集中的每一行记录形式上独立,行记录之间呈线性排列,无法体现行记录之间的层次关系。在web应用程序开发时,首先获取到的便是从数据库中选出的sql结果集,我们要构建一棵树,必须要把这种线性的结果集转化为具有层次性的json格式数据,这是一个复杂的过程。
[0003] 介于sql结果集数据格式与webtree控件所需要的json数据格式不一致的矛盾,需要一种数据格式转换算法,从而有效的解决问题。

发明内容

[0004] 本发明的技术任务是针对上述存在的问题,提供一种能够有效的解决sql结果集格式数据的过渡问题,并对webUI开发者高效地创建tree相关的web空间提供解决方案的基于树形结构的Sql结果集向Json数据转换的方法。
[0005] 为实现上述目的,本发明提供了如下技术方案:
[0006] 一种基于树形结构的Sql结果集向Json数据转换的方法,该方法获取sql结果集,定义一个字符串变量root,同时引入一个键值对数组,其中主键为节点编号,内容为该节点的直属子节点集合,继续循环钻取后续数据,若节点编号已存在,则替换除节点编号和children之外的属性,若节点编号不存在,则把数据封装后存入到键值对数组中,插入时同样缓存父节点编号,若父节点编号为空,则把父节点编号存入root,若父节点编号不为空,在键值对数组中找到节点编号为父节点编号的元素,若找不到,则添加一个主键为父节点编号的空节点,再将当前节点编号赋值到其父节点编号的children属性中,构建起树;从字符串root的节点集合开始,根据存有所有节点基础数据的键值对数组,对每一个树节点进行迭代赋值,生成json数据串。
[0007] 作为优选,该基于树形结构的Sql结果集向Json数据转换的方法具体包括以下步骤:
[0008] S1、从数据库读取到待展示的sql结果集,将结果集的每个记录路径字段数据转换为双亲表示法;
[0009] S2、采用步骤S1得到的结果集,定义字符串变量root,并引入一个键值对数组kv,对结果集的每行记录做处理,构建起树;
[0010] S3、根据构建的树,对每一个树节点进行迭代赋值,生成json数据集。
[0011] 作为优选,步骤S2中,初始化字符串变量root和键值对数组kv为空,则开始遍历sql结果集。
[0012] 作为优选,取出行记录x,在键值对数组kv中查找与x对应的原始y,若存在y,在键值对kv中覆盖y的除id和children之外的属性,否则将行记录x保存到kv中。
[0013] 作为优选,判断x的父节点id是否为空,若为空,则将x的id添加到root中,并继续取出行记录x,在键值对数组kv中查找与x对应的原始y,否则在键值对数组kv中查找id与x的父节点id相同的元素z。
[0014] 作为优选,判断元素z是否存在,若存在则将x的id添加到z的children属性的末尾,否则添加一个id为x的父节点id,children为x的id,属性为空的新元素到键值对数组kv中。
[0015] 作为优选,判断是否存在下一行记录,若存在则继续取出行记录x,在键值对数组kv中查找与x对应的原始y,否则结束。
[0016] 作为优选,所述sql数据集包括但不限于关系型数据库中java、.net、C、C++得到的结果集。
[0017] 与现有技术相比,本发明的基于树形结构的Sql结果集向Json数据转换的方法具有以下突出的有益效果:所述基于树形结构的Sql结果集向Json数据转换的方法解决了在关系型数据库中的线性数据转化为具有层次性数据的难题,在使用全国省市县乡的数据来构建,原始数据有44129条,在装有win7系统、内存为4G的机子上,java环境下运行,构建该树的四级结构需要不到1秒的时间,为webUI设计者创建Tree相关的控件带来很大的方便,具有良好的推广应用价值。附图说明
[0018] 图1是本发明所述基于树形结构的Sql结果集向Json数据转换的方法的流程图

具体实施方式

[0019] 下面将结合附图和实施例,对本发明的基于树形结构的Sql结果集向Json数据转换的方法作进一步详细说明。
[0020] 实施例
[0021] 本发明的基于树形结构的Sql结果集向Json数据转换的方法,获取sql结果集,定义一个字符串变量root,同时引入一个键值对数组,其中主键为节点编号,内容为该节点的直属子节点集合,继续循环钻取后续数据,若节点编号已存在,则替换除节点编号和children之外的属性,若节点编号不存在,则把数据封装后存入到键值对数组中,插入时同样缓存父节点编号,若父节点编号为空,则把父节点编号存入root,若父节点编号不为空,在键值对数组中找到节点编号为父节点编号的元素,若找不到,则添加一个主键为父节点编号的空节点,再将当前节点编号赋值到其父节点编号的children属性中,构建起树;从字符串root的节点集合开始,根据存有所有节点基础数据的键值对数组,对每一个树节点进行迭代赋值,生成json数据串。其中,sql数据集包括但不限于关系型数据库中java、.net、C、C++得到的结果集。
[0022] 如图1所示,该基于树形结构的Sql结果集向Json数据转换的方法具体包括以下步骤:
[0023] S1、从数据库读取到待展示的sql结果集,将结果集的每个记录路径字段数据转换为双亲表示法。
[0024] S2、采用步骤S1得到的结果集,定义字符串变量root,并引入一个键值对数组kv,对结果集的每行记录做处理,构建起树。
[0025] 初始化字符串变量root和键值对数组kv为空,则开始遍历sql结果集。取出行记录x,在键值对数组kv中查找与x对应的原始y,若存在y,在键值对kv中覆盖y的除id和children之外的属性,否则将行记录x保存到kv中。判断x的父节点id是否为空,若为空,则将x的id添加到root中,并继续取出行记录x,在键值对数组kv中查找与x对应的原始y,否则在键值对数组kv中查找id与x的父节点id相同的元素z。判断元素z是否存在,若存在则将x的id添加到z的children属性的末尾,否则添加一个id为x的父节点id,children为x的id,属性为空的新元素到键值对数组kv中。判断是否存在下一行记录,若存在则继续取出行记录x,在键值对数组kv中查找与x对应的原始y,否则结束。
[0026] S3、根据构建的树,对每一个树节点进行迭代赋值,生成json数据集。
[0027] 本发明的基于树形结构的Sql结果集向Json数据转换的方法的一个具体实施例如下:
[0028] 通过从关系型数据读取到待展示的sql线性结果集,随机选取一行记录,比如id=6,取其path字段值”2—5—6”,根据路径表示法path字段的取值规则可以知道,这棵树存在id=2的根节点。存在id=5的父节点。在选取id=2的记录时发现其path字段值就是它的id这表示它本身就是一个根节点,它的父节点就为空,即null。以此类推,可以将数据集的每个记录path字段变成表2中的parentid字段,即把数据转换为双亲表示法。
[0029] 采用上述步骤得到的sql数据集,首先定义一个字符串变量root,用于记录所有根节点id的集合。同时引入一个键值对数组kv(String id,object node)实际上kv相当于一个小型的数据库。其中,id即节点编号,node表示该节点的直隶子节点集合。然后遍历上述步骤中的行记录,例如id=8首先试图在键值对数组kv中获取id=8的元素,如果存在先替换该元素中除id和chilren之外的其他属性,缓存parentId(=7)。如果不存在将这个元素按照数据集格式封装并存入kv中,即插入(“8”,node)插入之前同样缓存parentld。若parentId为空,将parentld添加到root,若不为空在kv中找出id为parentId的元素,如果找不到,添加一个id为parentId(=7)的空节点。然后再将当前节点的id添加赋值到其父节点的children属性里。数据集的每行记录做出这样的处理后,一棵树即被构建起来。在树构建好以后,从字符串root中的id集合开始,根据存有所有树节点基础数据的kv,对每一个树节点进行迭代赋值,最终生成目标格式json数据串。
[0030] 以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈