我正在使用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"}
答案 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列。