转换作业中的 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 列。
我正在使用 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 列。