文档章节

kettle中JSON数据解析

马进举
 马进举
发布于 2018/08/06 19:11
字数 474
阅读 1579
收藏 1

前言

关于kettle的JSON字符串的解析已经困扰我们很长时间了,我们知道kettle中有JSON输入控件,但这个控件用的JSONPATH语法折腾了几次都没闹明白,之前我们一直都是采取写插件使用fastjson进行解析的,最近我考虑了一个新的解析思路,就是通过JavaScript控件编写JavaScript代码进行解析,需要会一点JavaScript语法,但这样就非常灵活了,也不用写插件那么麻烦,可以肯定的是这种方式一定比JSON输入控件更灵活,缺点就是要会点JavaScript。

样例转换

样例转换

自定义常量数据

自定义常量数据

这个用户定义json字符串,实际业务中采用实际的数据来源即可。

运行效果如下:

JavaScript代码

JavaScript代码如下:

//JSON字符串解析示例

//json来源
eval('var js='+LD);

//需要输出的字段
var NAME = "";
var AGE = "";

//writeToLog("e", jd.data);
//个性化处理,js就是一个JavaScript对象。
for(var i=0;i<js.data.length;i++){
	//var outputRow = Packages.org.pentaho.di.core.row.RowDataUtil.resizeArray( row, _step_.getOutputRowMeta().size());
	var outputRow = new Array(_step_.getOutputRowMeta().size());
	var data = js.data[i];
	//writeToLog("e", data.toString());
    outputRow[_step_.getOutputRowMeta().indexOfValue("LD")] = LD;
    outputRow[_step_.getOutputRowMeta().indexOfValue("AGE")] = data.age;
    outputRow[_step_.getOutputRowMeta().indexOfValue("NAME")] = data.name;
	_step_.putRow(_step_.getOutputRowMeta(), outputRow);
}

var trans_Status = SKIP_TRANSFORMATION;

需要注意的是我们需要输出的字段需要在控件下方的字段中添加字段定义。

运行效果如下:

文本文件输出

这个就是一个结果输出,实际业务中根据实际需要换成其他输出目标对象。

© 著作权归作者所有

共有 人打赏支持
马进举
粉丝 36
博文 6
码字总数 7987
作品 1
遂宁
私信 提问
加载中

评论(1)

w
wt25
您好,请问有kettle-manager 0.4.0的源码吗?预览转换图和作业图怎么实现的,可否帮助一下。
kettle下转移mongo中数据到mysql中

版权声明:本文为博主原创文章,未经博主允许不得转载。请注明博客地址(http://blog.csdn.net/gsying1474) https://blog.csdn.net/gsying1474/article/details/54140108 Kettle是一款国外开...

刘迎光-萤火虫工作室
2017/01/06
0
0
使用Kettle导入Excel数据

使用Kettle导入Excel数据 曾静的技术博客2017-08-2022 阅读 导入数据kettleExcel ETL(Extraction, Transformation, and Loading),在日常的工作中我们经常会遇到各种数据的处理,转换,迁移...

曾静的技术博客
2017/08/20
0
0
ETL利器Kettle实战应用解析系列一【Kettle使用介绍】

一、ETL利器Kettle实战应用解析系列一【Kettle使用介绍】 二、ETL利器Kettle实战应用解析系列二 【应用场景和实战DEMO下载】 三、ETL利器Kettle实战应用解析系列三 【ETL后台进程执行配置方式...

李丁玲
2016/03/04
133
0
Kettle读取MongoDB中的Binary类型数据,怎么能读出来

Kettle读取MongoDB中的Binary类型数据,MongoDB Input组件,用Json和字段方式都试过,都读不出来,读出来的是一个奇奇怪怪的值。 求解

俗人2
2018/07/05
1K
0
使用kettle时,csv输入和json input输入时,文件中字段或值为中文时预览时出现乱码怎么办?

kettle中输入选择“json input输入”和“csv文件输入”,其中在xxx.js文件中key和value值为中文时,在文件点击预览数据时显示数据为乱码怎么解决?(为英文时正常) 安照网上查的.js文件保存...

水水壶
2018/03/27
513
0

没有更多内容

加载失败,请刷新页面

加载更多

Infor宣布首次公开募股

为特定行业提供商业云软件的全球领先提供商Infor今天宣布达成协议,获得科氏控股发展有限公司(KED , Koch Equity Development, LLC)以及金门资本(Golden Gate Capital)15亿美元投资。 继201...

linux-tao
35分钟前
1
0
Mysql索引总结

由于Mysql的索引是B-tree或B+tree,所以下面会先涉及到一些树的概念。 1、二叉树特性:左子树的键值小于根的键值,右子树的键值大于根的键值。 2、平衡二叉树是为了减小树的深度从而减小查找...

浮躁的码农
36分钟前
5
0
为什么说 Gumroad 是一家 “失败” 的创业公司?

Gumroad 是一家 “失败” 的创业公司。 创立于 2012 年,Gumroad 是一个面向创造者的电商平台。创始人 Sahil Lavingia,一名 19 岁的少年,Pinterest 的二号员工,放弃了手上的期权,拿着投资...

极光推送
41分钟前
2
0
centos7.0查看IP及网卡未启动时的处理方式

输入ip查询命名 ip addr 也可以输入 ifconfig(centOs7没有ifconfig命令)查看ip,但此命令会出现3个条目,centos的ip地址是ens33条目中的inet值。 发现 ens33 没有 inet 这个属性,那么就没...

haoyuehong
44分钟前
1
0
折腾Java设计模式之访问者模式

博客原文地址:折腾Java设计模式之访问者模式 访问者模式 Represent an operation to be performed on the elements of an object structure. Visitor lets a new operation be defined wit......

大萌小路
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部