转换作业中的Pentaho数据集成JSON输入未显示所有JSON对象

时间:2019-02-26 11:29:51

标签: etl pentaho transformation data-processing pdi

我正在使用Pentaho数据集成工具来处理一些ETL处理工作。

我的数据输入是一个名为data.json的json文件,其中包含许多json对象,如下所示:

{"id":"333","name":"iit"}
{"id":"444","name":"nit"}
{"id":"555","name":"iiit"}
{"id":"666","name":"jnit"}

,当我在PDI转换设计中使用json输入时,json预览仅显示第一行。请检查此屏幕截图enter image description here

但是当我按如下方式修改data.json文件时,同样可以正常工作:

{
    "data" : [
                {"id":"333","name":"iit"},
                {"id":"444","name":"nit"},
                {"id":"555","name":"iiit"},
                {"id":"666","name":"jnit"}
            ]
}

请在此处查看屏幕截图: enter image description here

请帮我如何使用以下格式获取data.json文件中存在的所有json对象:

{"id":"333","name":"iit"}
{"id":"444","name":"nit"}
{"id":"555","name":"iiit"}
{"id":"666","name":"jnit"}

3 个答案:

答案 0 :(得分:1)

您的$ .id和$ .name路径是可以的。问题出在JSON。

{"id":"333","name":"iit"}
{"id":"444","name":"nit"}
{"id":"555","name":"iiit"}
{"id":"666","name":"jnit"}

这不是有效的JSON,这就是为什么只读取第一行的原因。它读取第一行,然后遇到第二个大括号,而没有打逗号,并且它只是停止了,因为它不知道要做什么使用无效的JSON。

像这样格式化JSON,并且无需修改JSONPath。

{"id":"333","name":"iit"},
{"id":"444","name":"nit"},
{"id":"555","name":"iiit"},
{"id":"666","name":"jnit"}

答案 1 :(得分:0)

XPath:

$。data [*]。id

不同于:

$。data

尝试使用$ .. id和$ .. name,这两种情况都应该起作用,并为您带来所有对象。

答案 2 :(得分:0)

如果您的JSON文件看起来像这样,可以采取一种解决方法:

创建一个文本文件输入,该文件读取每一行并将这些行发送到JSON输入。

然后每行都将被视为其自己的JSON输入。

Text-file-input and JSON-input

然后,您可以按预期使用JSON节点(如果我理解正确的话)

JSON-input

您的输出将如下所示:

Output

使用“选择值”节点删除json列。