如何在Pentaho中忽略JSON的null节点以获取完整数据?
解决Pentaho Json Input读取含null地址的报错问题
方法1:使用根路径+相对字段路径(推荐)
- 打开Json Input组件的Fields标签页
- 在顶部的Root path输入框中填写:
$.users[*],这表示先遍历users数组的每一项 - 逐个添加字段,使用相对路径:
- 字段名
name,路径填$.name - 字段名
province,路径填$.address.province - 字段名
district,路径填$.address.district - 字段名
ward,路径填$.address.ward - 字段名
raw_address,路径填$.address.raw_address
- 字段名
- 确保Content标签页的
ignore missing path选项已勾选 - 运行转换,此时address为null的条目对应的省份、区县等字段会填充为null,不会报错
方法2:使用JsonPath默认值语法
如果不想修改根路径,可在每个address子字段的路径中添加默认值,强制返回null以保证结果数量一致:
- 省份路径改为:
$.users[*].address.province ?: null - 区县路径改为:
$.users[*].address.district ?: null - 以此类推,所有address子字段都加上
?: null后缀 - 同样确保
ignore missing path已勾选,这样路径不存在时会返回null,匹配name字段的3条结果数
方法3:拆分解析流程
如果上述方法仍不生效,可拆分两步处理:
- 先用Json Input读取整个users数组的每个元素为字符串字段,路径填
$.users[*],字段名设为user_json - 添加Json Input组件,将
user_json作为输入源(选择Source is from a field) - 在第二个Json Input中解析每个user_json的name和address字段,此时单条对象解析不会出现数量不匹配的问题
内容的提问来源于stack exchange,提问作者Trần Hưng Vượng
相关产品推荐
相关产品推荐

