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

问题描述 投票:0回答:3

我正在使用Pentaho Data集成工具来完成一些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"}
etl pentaho transformation data-processing pdi
3个回答
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"}

0
投票

XPath的:

$。数据[*]。ID

不同于:

$。数据

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


0
投票

如果你的JSON文件看起来像这样,可以做一个解决方法:

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

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

Text-file-input and JSON-input

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

JSON-input

您的输出将如下所示:

Output

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

© www.soinside.com 2019 - 2024. All rights reserved.