一种JSON数据的结构化解析方法及装置技术领域
本发明涉及数据处理技术领域,特别涉及一种JSON数据的结构化解析方法及装
置。
背景技术
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,JSON数据属
于半结构化数据,数据结构比较松散,可以存储比较复杂的数据类型,因此JSON被广泛应用
于MongoDB(基于分布式文件存储的数据库)等数据库,以代替关系型数据库来存储高并发
读写的数据。在对海量数据进行有针对性的挖掘分析时,有时需要对JSON数据进行结构化
解析,将JSON数据转换为结构化数据,以便数据挖掘分析。
目前,在对JSON数据进行结构化解析时,主要通过人工解析的方式,将各条JSON数
据整合到数据表中,形成结构化数据。
针对于现有JSON数据的结构化解析方法,通过人工逐条解析的方式对JSON数据进
行解析,当JSON数据的数据量较大时,需要耗费大量时间才能够完成JSON数据的结构化解
析,造成对JSON数据进行结构化解析的效率较低。
发明内容
本发明实施例提供了一种JSON数据的结构化解析方法及装置,能够提高对JSON数
据进行结构化解析的效率。
第一方面,本发明实施例提供了一种JSON数据的结构化解析方法,包括:
对至少一条JSON数据的文档对象进行结构化解析,形成结构化文档数据;
对所述至少一条JSON数据的数组对象进行结构化解析,形成结构化数组数据;
根据外部输入的关键字段,将所述结构化文档数据与所述结构化数组数据关联合
并,形成结构化输出数据;
创建所述结构化输出数据中字段与外部关系型数据库中字段之间的字段映射关
系;
根据所述字段映射关系,将所述结构化输出数据导入所述外部关系型数据库。
优选地,
在所述根据外部输入的关键字段将所述结构化文档数据与所述结构化数组数据
关联合并之前,进一步包括:
通过Java数据库连接JDBC连接器连接存储有所述至少一条JSON数据的非关系型
数据库;
通过所述JDBC连接器对所述至少一条JSON数据进行预览;
接收外部根据所预览的所述至少一条JSON数据而输入的所述关键字段。
优选地,
所述根据外部输入的关键字段将所述结构化文档数据与所述结构化数组数据关
联合并,包括:
针对于所述结构化文档数据包括的任意一条第一数据,获取所述第一数据中位于
所述关键字段下的关键数据;
从所述结构化数组数据中获取一条第二数据,其中所述第二数据中位于所述关键
字段下的数据与所述关键数据相同;
将所述第一数据与第二数据进行关联合并。
优选地,
在所述形成结构化文档数据之后,进一步包括:
对所述结构化文档数据进行预览。
优选地
在所述形成结构化数组数据之后,进一步包括:
对所述结构化数组数据进行预览。
优选地,
所述根据所述字段映射关系将所述结构化输出数据导入所述外部关系型数据库,
包括:
针对于所述结构化输出数据中的任意一个第一字段,根据所述字段映射关系,确
定所述外部关系型数据库中与所述第一字段相映射的第二字段;
将所述结构化输出数据中位于所述第一字段下的数据导入到所述外部关系型数
据库中所述第二字段下。
第二方面,本发明实施例还提供了一种JSON数据的结构化解析装置,包括:解析单
元、合并单元、映射单元及导入单元;
所述解析单元,用于对至少一条JSON数据的文档对象进行结构化解析,形成结构
化文档数据;以及对所述至少一条JSON数据的数组对象进行结构化解析,形成结构化数组
数据;
所述合并单元,用于根据外部输入的关键字段,将所述解析单元形成的所述结构
化文档数据与所述结构化数组数据关联合并,形成结构化输出数据;
所述映射单元,用于创建所述合并单元所形成的所述结构化输出数据中字段与外
部关系型数据中字段之间的字段映射关系;
所述导入单元,用于根据所述映射单元创建的所述字段映射关系,将所述合并单
元形成的所述结构化输出数据导入所述外部关系型数据库。
优选地,
该装置进一步包括:预览单元;
所述预览单元,用于通过Java数据库连接JDBC连接器连接存储有所述至少一条
JSON数据的非关系型数据库;并通过所述JDBC连接器对所述至少一条JSON数据进行预览;
以及接收外部根据所预览的所述至少一条JSON数据而输入的所述关键字段。
优选地,
所述合并单元,用于针对于所述结构化文档数据包括的任意一条第一数据,获取
所述第一数据中位于所述关键字段下的关键数据;从所述结构化数组数据中获取一条第二
数据,其中所述第二数据中位于所述关键字段下的数据与所述关键数据相同;将所述第一
数据与第二数据进行关联合并。
优选地,该装置进一步包括:展示单元;
所述展示单元,用于对所述解析单元形成的所述结构化文档数据进行预览;和/
或,所述展示单元用于对所述解析单元形成的所述结构化数组数据进行预览。
优选地,
所述导入单元,用于针对于所述结构化输出数据中的任意一个第一字段,根据所
述字段映射关系,确定所述外部关系型数据库中与所述第一字段相映射的第二字段;将所
述结构化输出数据中位于所述第一字段下的数据导入到所述外部关系型数据库中所述第
二字段下。
本发明实施例提供了一种JSON数据的结构化解析方法及装置,分别对JSON数据的
文档对象和数组对象进行结构化解析,根据关键字段将解析获得的结构化文档数据与结构
化数组数据进行关联合并后,形成结构化输出数据,进而根据结构化输出数据中字段与外
部关系型数据库中字段之间的映射关系,将结构化输出数据导入到外部关系型数据库中。
由此可见,通过创建结构化输出数据与外部关系型数据库之间的字段映射关系,自动将解
析出的结构化输出数据导入到外部关系型数据库中,完成JSON数据的结构化解析,无需通
过手动操作的方式逐条对JSON数据进行解析,从而提高了对JSON数据进行结构化解析的效
率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明
的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
这些附图获得其他的附图。
图1是本发明一个实施例提供的一种JSON数据的结构化解析方法流程图;
图2是本发明另一个实施例提供的一种JSON数据的结构化解析方法流程图;
图3是本发明一个实施例提供的一种JSON数据的结构化解析装置所在设备的示意
图;
图4是本发明一个实施例提供的一种JSON数据的结构化解析装置的示意图;
图5是本发明另一个实施例提供的一种JSON数据的结构化解析装置的示意图;
图6是本发明又一个实施例提供的一种JSON数据的结构化解析装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员
在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种JSON数据的结构化解析方法,该方法可以包
括以下步骤:
步骤101:对至少一条JSON数据的文档对象进行结构化解析,形成结构化文档数
据;
步骤102:对所述至少一条JSON数据的数组对象进行结构化解析,形成结构化数组
数据;
步骤103:根据外部输入的关键字段,将所述结构化文档数据与所述结构化数组数
据关联合并,形成结构化输出数据;
步骤104:创建所述结构化输出数据中字段与外部关系型数据库中字段之间的字
段映射关系;
步骤105:根据所述字段映射关系,将所述结构化输出数据导入所述外部关系型数
据库。
本发明实施例提供了一种JSON数据的结构化解析方法,分别对JSON数据的文档对
象和数组对象进行结构化解析,根据关键字段将解析获得的结构化文档数据与结构化数组
数据进行关联合并后,形成结构化输出数据,进而根据结构化输出数据中字段与外部关系
型数据库中字段之间的映射关系,将结构化输出数据导入到外部关系型数据库中。由此可
见,通过创建结构化输出数据与外部关系型数据库之间的字段映射关系,自动将解析出的
结构化输出数据导入到外部关系型数据库中,完成JSON数据的结构化解析,无需通过手动
操作的方式逐条对JSON数据进行解析,从而提高了对JSON数据进行结构化解析的效率。
在本发明一个实施例中,在步骤103根据关键字段将结构化文档数据与结构化数
组数据进行关联合并之前,通过JDBC(Java Data Base Connectivity,java数据库连接)连
接器连接存储有所述JSON数据的非关系型数据库,通过JDBC连接器可以对各条JSON数据进
行预览。这样用户就可以根据预览的JSON数据确定用于关联合并结构化文档数据与结构化
数组数据的关键字段,从而可以接收用户指定的关键字段。
具体地,一方面,由于不同的JSON数据可能需要不同的关键字段进行关联合并,通
过JDBC连接器对JSON数据进行预览,进而可以接收用户根据所预览JSON数据而确定的关键
字段,保证能够通过关键字段将解析出的结构化文档数据与结构化数组数据关联合并,从
而可以满足对不同JSON数据进行结构化解析的需求,提高了该JSON数据结构化解析方法的
适用性。另一方面,利用JDBC连接器连接非关系型数据库后对JSON数据进行展示,无需单独
设置其他的预览软件,提高了该SON数据结构化解析方法的易用性。
在本发明一个实施例中,步骤103中对结构化文档数据与结构化数组数据进行关
联合并,形成结构化输出数据。具体地,针对于结构化文档数据包括的任意一条第一数据,
获取第一数据中位于关键字段下的关键数据,进而从结构化数组数据中获取关键字段下数
据也为关键数据的第二数据,将第一数据与第二数据进行关联合并。这样将结构化文档数
据包括的各条数据与结构化数组数据中相应的数据均进行关联合并后,形成结构化输出数
据。
具体地,
关键字段是结构化文档数据与结构化数组数据均包括的字段,对JSON数据进行预
览后,由用户根据需求指定。结构化文档数据包括有多条数据记录,每一条数据记录均对应
结构化数组数据中的一条数据记录,相对应的两条数据记录中位于关键字段下的数据相
同。从而可以根据关键字段下的数据来确定相对应的两条数据记录,进而将相对应的两条
数据记录关联合并,将所有相对应的数据监控关联合并后形成结构化输出数据。
例如,结构化文档数据中每一条数据中包括字段“ID”,同时结构化数组数据中每
一条数据中也包括字段“ID”,将字段“ID”作为关键字段后,将结构化文档数据中字段“ID”
下数据为X的一条数据与结构化数组数据中字段“ID”下数据为X的一条数据关联合并,将X
替换为不同的ID号后,可以将结构化文档数据中包括的各条数据与结构化数组数据中相应
的数据进行关联合并,形成结构化输出数据。
通过关键字段将结构化文档数据与结构化数组数据关联合并形成结构化输出数
据的方法,由于可以通过脚本代码识别结构化文档数据与结构化数组数据中的关键字段,
从而可以通过脚本代码实现JSON数据的结构化解析,以代替手动对JSON数据进行解析的方
法,从而可以提高对JSON数据进行结构化解析的效率。
在本发明一个实施例中,步骤101中形成结构化文档数据之后,可以对所形成的结
构化文档数据进行预览。相应地,步骤102中形成结构化数组数据之后,也可以对所形成的
结构化数组数据进行预览。
具体地,通过对结构化文档数据和/或结构化数组数据进行预览,提供可视化的结
构化解析预览窗口,用户通过预览的结构化文档数据和/或结构化数组数据,可以对JSON数
据的结构化解析过程进行配置和监控,进一步提高了该JSON数据结构化解析方法的易用
性。
需要说明的时,对结构化文档数据和结构化数组数据进行预览的过程,同样可以
利用JDBC连接器实现。
在本发明一个实施例中,步骤105中将结构化输出数据导入到外部关系型数据库
中时,针对于结构化输出数据中的任意一个第一字段,根据步骤104中确定出的字段映射关
系,从外部关系型数据库中确定与第一字段相映射的第二字段,进而将结构化输出数据中
第一字段下的数据导入到外部关系型数据库中第二字段下。这样,针对结构化输出数据中
的每一个字段执行上述处理后,将结构化输出数据全部导入到外部关系型数据库中。
具体地,由于此前已经创建了结构化输出数据与外部关系型数据库中字段的字段
映射关系,根据字段映射关系将结构化输出数据中各个字段下的数据导入到外部关系型数
据库中相应的字段下,完成JSON数据的结构化解析。通过创建字段映射关系的方式将结构
化输出数据导入到外部关系型数据库中,保证所导入数据的准确性,从而提高了该JSON数
据结构化解析方法对JSON数据进行结构化解析的准确性。
另外,在将结构化输出数据中各个字段下的数据导入外部关系型数据库中的过程
中,同一字段下各行数据的顺序保持不变,保证了结构化输出数据导入外部关系型数据库
后不同字段下数据的对应关系与原JSON数据保持一致,进一步提高了对JSON数据进行结构
化解析的准确性。
下面以对MongoDB数据库中的JSON数据进行结构化解析为例,对本发明实施例提
供的JSON数据的结构化解析方法作进一步详细说明,如图2所示,该方法可以包括以下步
骤:
步骤201:通过JDBC连接器连接非关系型数据库。
在本发明一个实施例中,通过JDBC(Java数据库连接)连接器连接存储有待解析
JSON数据的非关系型数据库,具体连接过成为通过JDBC连接器驱动配置非关系型数据库
ID、端口号、用户名、密码等参数,以连接到存储有待解析JSON数据的非关系型数据库。
例如,通过驱动配置MongoDB数据库的ID、端口号、用户名及密码,连接MongoDB数
据库。
步骤202:通过JDBC连接器对非关系型数据库上的JSON数据进行预览。
在本发明一个实施例中,将JDBC连接器连接到非关系型数据库之后,通过JDBC连
接器对非关系型数据库中存储的待解析JSON数据进行预览。
例如,通过JDBC连接器对MongoDB数据库中的JSON数据的文档对象及数组对象进
行预览,供用户进行查看。
步骤203:接收外部根据所预览的JSON数据而输入的关键字段。
在本发明一个实施例中,对JSON数据进行预览后,用户根据所预览的JSON数据,输
入关键字段,从而接收到用户输入的关键字段。其中,关键字段是JSON数据中文档对象及数
组对象均包括的字段,通过该关键字段下的数据,可以确定文档对象所包括的各条数据与
数组对象所包括的各条数据之间的对象关系。
例如,MongoDB数据库中JSON数据的文档对象及数组对象均包括有“ID”这个字段,
根据外部的触发将“ID”这个字段确定为关键字段。
步骤204:对JSON数据的文档对象进行结构化解析,形成结构化文档数据并预览。
在本发明一个实施例中,分别对每一条JSON数据的文档对象进行结构化解析,将
文档对象解析为多行存储的结构化的数据,将对各条JSON数据的文档对象进行结构化解析
后形成的数据作为结构化文档数据,并对所形成的结构化文档数据进行预览。
例如,MongoDB数据库中包含有1000条待结构化解析的JSON数据,针对于每一条
JSON数据的文档对象进行结构化解析,形成包括ID、formid、type、modified、
projectnumber、mdmcode、month、name及projectname共9个字段的结构化数据,将对各条
JSON数据的文档对象进行结构化解析后形成的结构化数据进行组合,形成结构化文档数
据。并对所形成的结构化文档数据进行预览。
步骤205:对JSON数据的数组对象进行结构化解析,形成结构化数组数据并预览。
在本发明一个实施例中,分别对每一条JSON数据的数组对象进行结构化解析,将
数组对象解析为多行存储的结构化数据,将对各条JSON数据的数组对象进行结构化结构后
形成的数据作为结构化数组数据,并对所形成的结构化数组数据进行预览。
例如,针对于1000条JSON数据中每一条的数组对象进行结构化解析,形成包括ID、
xuhao、neirong_biao、leibie_biao、zhuti_caigou、xingshi_caigou等16个字段的结构化
数据,将各条JSON数据的数组对象进行结构化解析后形成的结构化数据进行组合,形成结
构化数组数据。并对形成的结构化数组数据进行预览。
步骤206:根据关键字段,将结构化文档数据与结构化数组数据关联合并,形成结
构化输出数据。
在本发明一个实施例中,将结构化文档数据及结构化数组数据中关键字段下数据
相同的两条数据进行关联合并,从而将结构化文档数据与结构化数组数据中各条数据进行
一对一的关联合并,将关联合并后的结构化文档数据及结构化数组数据作为结构化输出数
据。
例如,将结构化文档数据及结构化数组数据中ID字段下为同一个值的两条数据进
行关联合并,比如结构化文档数据中第一条数据ID字段下的值为001,结构化数组数据中第
二数据ID字段下的值为001,则将结构化文档数据中第一条数据与结构化数组数据中第二
数据进行关联合并。将结构化文档数据包括的1000条数据与结构化数组数据包括的1000条
数据进行分别关联合并后,形成结构化输出数据。
步骤207:创建结构化输出数据与外部关系型数据库中字段的字段映射关系。
在本发明一个实施例中,根据数据分析需求,创建结构化输出数据所包括的各个
字段与外部关系型数据库中字段的字段映射关系。
例如,将结构化输出数据中的字段“neirong_biao”与oracle数据库中的字段“标
的内容”创建映射关系,将结构化输出数据中的字段“leibie_biao”与oracle数据库中的字
段“标的类别”创建映射关系等。
步骤208:根据字段映射关系,将结构化输出数据导入外部关系型数据。
在本发明一个实施例中,根据步骤207中创建的字段映射关系,将结构化输出数据
中各字段下的数据导入到外部关系型数据中相应的字段下。
例如,将结构化输出数据中字段“neirong_biao”下的数据导入到oracle数据库中
字段“标的内容”下,将结构化输出数据中字段“leibie_biao”下的数据导入到oracle数据
库中字段“标的类别”下等。
如图3、图4所示,本发明实施例提供了一种JSON数据的结构化解析装置。装置实施
例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图
3所示,为本发明实施例提供的JSON数据的结构化解析装置所在设备的一种硬件结构图,除
了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备
通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,
作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机
程序指令读取到内存中运行形成的。本实施例提供的JSON数据的结构化解析装置,包括:解
析单元401、合并单元402、映射单元403及导入单元404;
所述解析单元401,用于对至少一条JSON数据的文档对象进行结构化解析,形成结
构化文档数据;以及对所述至少一条JSON数据的数组对象进行结构化解析,形成结构化数
组数据;
所述合并单元402,用于根据外部输入的关键字段,将所述解析单元401形成的所
述结构化文档数据与所述结构化数组数据关联合并,形成结构化输出数据;
所述映射单元403,用于创建所述合并单元402所形成的所述结构化输出数据中字
段与外部关系型数据中字段之间的字段映射关系;
所述导入单元404,用于根据所述映射单元403创建的所述字段映射关系,将所述
合并单元402形成的所述结构化输出数据导入所述外部关系型数据库。
在本发明一个实施例中,如图5所示,该JSON数据的结构化解析装置可以进一步包
括:预览单元505;
所述预览单元505,用于通过Java数据库连接JDBC连接器连接存储有所述至少一
条JSON数据的非关系型数据库;并通过所述JDBC连接器对所述至少一条JSON数据进行预
览;以及接收外部根据所预览的所述至少一条JSON数据而输入的所述关键字段。
在本发明一个实施例中,所述合并单元402用于针对于所述结构化文档数据包括
的任意一条第一数据,获取所述第一数据中位于所述关键字段下的关键数据;从所述结构
化数组数据中获取一条第二数据,其中所述第二数据中位于所述关键字段下的数据与所述
关键数据相同;将所述第一数据与第二数据进行关联合并。
在本发明一个实施例中,如图6所示,该JSON数据的结构化解析装置可以进一步包
括:展示单元606;
所述展示单元606,用于对所述解析单元401形成的所述结构化文档数据进行预
览;
同时,所述展示单元60还可以用于对所述解析单元401形成的所述结构化数组数
据进行预览。
在本发明一个实施例中,所述导入单元404用于针对于所述结构化输出数据中的
任意一个第一字段,根据所述字段映射关系,确定所述外部关系型数据库中与所述第一字
段相映射的第二字段;将所述结构化输出数据中位于所述第一字段下的数据导入到所述外
部关系型数据库中所述第二字段下。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施
例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明一个实施例还提供了一种可读介质,包括执行指令,当存储控制器的处理
器执行所述执行指令时,所述存储控制器执行上述各个实施例提供的JSON数据的结构化解
析方法。
本发明一个实施例还提供了一种存储控制器,包括:处理器、存储器和总线;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当
所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储
控制器执行上述各个实施例提供的JSON数据的结构化解析方法。
综上所述,本发明各个实施例提供的JSON数据的结构化解析方法及装置,至少具
有如下有益效果:
1、在本发明实施例提供的JSON数据的结构化解析方法及装置中,分别对JSON数据
的文档对象和数组对象进行结构化解析,根据关键字段将解析获得的结构化文档数据与结
构化数组数据进行关联合并后,形成结构化输出数据,进而根据结构化输出数据中字段与
外部关系型数据库中字段之间的映射关系,将结构化输出数据导入到外部关系型数据库
中。由此可见,通过创建结构化输出数据与外部关系型数据库之间的字段映射关系,自动将
解析出的结构化输出数据导入到外部关系型数据库中,完成JSON数据的结构化解析,无需
通过手动操作的方式逐条对JSON数据进行解析,从而提高了对JSON数据进行结构化解析的
效率。
2、在本发明实施例提供的JSON数据的结构化解析方法及装置中,通过JDBC连接器
对JSON数据进行预览,可以接收用户根据所预览JSON数据而指定的关键字段,从而根据关
键字段对结构化文档数据及结构化数组数据进行关联合并,可以满足不同用户及JSON数据
的结构化解析需求,提高了该SON数据的结构化解析方法及装置的适用性。
3、在本发明实施例提供的JSON数据的结构化解析方法及装置中,利用JDBC连接器
连接非关系型数据库后对JSON数据进行展示,无需单独设置其他的预览软件,提高了该SON
数据结构化解析方法的易用性。
4、在本发明实施例提供的JSON数据的结构化解析方法及装置中,通过对结构化文
档数据和/或结构化数组数据进行预览,提供可视化的结构化解析预览窗口,用户通过预览
的结构化文档数据和/或结构化数组数据,可以对JSON数据的结构化解析过程进行配置和
监控,进一步提高了该JSON数据结构化解析方法的易用性。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体
或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在
任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非
排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,
而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固
有的要素。在没有更多限制的情况下,由语句“包括一个〃·····”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过
程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序
在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光
盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技
术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、
等同替换、改进等,均包含在本发明的保护范围内。