通过Kettle工具解析Json接口数据并且保存到数据库中的详细操作

       最近接到一个业务需求,要把一个Json接口数据获取下来并且保存到数据库中,考虑到应用代码实现功能需要耗费一定时间和精力,一旦需要修改,就得重启项目等。于是就选择利用Kettle工具来实现这个业务功能,将其从项目源码中分离为一个独立的功能模块,它的整体设计结构图如下:
在这里插入图片描述
说明:
生成记录:用于生成接口链接转化为一个文本字段,提供给所有步骤进行使用;
REST client:用于获取接口数据,形成一个Json文档结果集,并且在之后的步骤进行使用;
JSON input:用于解析json文档结果集,将json数据拆分成一个一个单独的字段;
表输出:用于将数据集的内容保存到数据库中;
JSON output:用于输出Json文档结果集,并且形成一个json或者txt等格式的文档;

       上述图的“JSON output”步骤为额外步骤,主要是用于测试该模型是否能获取到接口数据,并且将数据进行正确地解析最后再利用。如果读者有添加到该步骤,可以用鼠标点击这个步骤的连线,将其变为灰色就不会执行该步骤。下面开始详细分析:

(一)获取接口链接的数据集
在这里插入图片描述
①生成记录:在kettle工具的输入->生成记录进行创建的,其具体填写内容如下:
在这里插入图片描述
在这里插入图片描述

说明
限制:此处设置为1,是为了避免同一条链接会生成多个url结果,导致最终输出的结果有大量重复数据;
字段:将想要解析的接口链接填写到第一栏,并且填写任意名称(只要能标识当前接口链接即可);

②REST client:它在kettle工具的查询->REST client进行创建:,其具体填写内容如下:
在这里插入图片描述
在这里插入图片描述
说明
       按照图中勾选Accept URL from field,然后在URL field name中选择“生成记录”步骤所创建的字段“url”,默认请求方式为GET,并且设置结果集的名称为“result”。

       值得注意的是 ,参照网上很多例子,大部分文章写的都是没有“生成记录”这个步骤,而是直接是创建“REST client”步骤获取接口数据,其填写内容如下:
在这里插入图片描述
在这里插入图片描述

       即将接口链接直接放到“REST client”步骤进行获取,笔者亲测发现一直获取不到接口数据,这个有可能跟kettle版本有关,此处一笔带过,不具体分析。

(二)解析Json数据
在这里插入图片描述
       解析Json数据主要是用到“JSON input”这个步骤,该步骤是在输入->JSON input进行创建的:
在这里插入图片描述
       当然,在编写该步骤之前,我们首先得知道这个接口链接所得到的的Json数据是什么格式,我们需要拿到这个接口的什么数据,本文的接口数据如下所示:
在这里插入图片描述
       通过上图的数据格式,我需要拿到的数据是接口数据里面data的结果集,于是“JSON output”步骤里面要填写的内容如下:
在这里插入图片描述
在这里插入图片描述

说明
       第一步,首先按照图示勾选“元定义在一个字段里”,然后在下方选择“REST client”步骤所定义的Json文档结果集。第二步,在“字段”这个窗口填写需要解析的字段内容,此处需要注意的是路径的填写,使用:

$..result

来获取json文档结果集。从本文的接口图可以看到,我们需要获取结果集的data属性,并且遍历data属性里面的数组对象数据,因此使用:

$..result.data[*]

最后再通过:

$..result.data[*].level

的方式获取遍历对象里面的属性值。

(三)保存到数据库
在这里插入图片描述
该步骤是在输出->表输出中进行创建的:
在这里插入图片描述
其填写内容如下所示:
       首先点击“新建”,找到需要保存的数据库类型,填写相关的数据库连接信息,然后测试一下数据库连接是否正常。如果为正常,则点击确认,继续操作下一步。
在这里插入图片描述
在这里插入图片描述
       接下来选择目标表,并且将数据库表字段如下图所示:
在这里插入图片描述
在这里插入图片描述
       最后,点击运行即可。

       假如获取的数据为空,请检查一下接口是否请求正常是否需要设置Cookie或者token值、"JSON input"步骤填写的变量是否正确等,具体设置参数可以在“生成记录”步骤添加参数,然后在“REST client”步骤中的相关位置添加就行:如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值