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

Pentaho data integration JSON input in transformation job not showing all json objects

我正在使用 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 预览仅显示第一行。请查看此屏幕截图

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

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

请在此处查看屏幕截图:

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

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

XPath:

$.data[*].id

不同于:

$.data

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

你的$.id 和$.name 路径没问题。问题出在 JSON.

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

这是无效的 JSON,这就是为什么只读入第一行的原因。它读取第一行,然后遇到第二个左花括号,但没有碰到逗号,它就停止了,因为它不知道如何处理无效的 JSON.

像这样格式化你的JSON,它应该可以在不修改你的JSON路径的情况下工作。

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

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

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

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

然后您可以按照您的意愿使用 JSON-节点(如果我理解正确的话)

您的输出将如下所示:

使用 'select values' 节点删除 json 列。