Jolt转换问题:仅两列非空时拼接,否则设默认值
解决Jolt JSON转换中PLMDepartment字段的条件生成问题
你的原始Jolt规范未实现预期逻辑的原因是:它直接拼接division_Code和department_Code,没有判断这两个字段是否为空字符串。当其中一个字段为空时,拼接结果会是另一个字段的值,而非要求的"Invalid"。
以下是修正后的Jolt规范,能够满足你的需求:
[ { "operation": "modify-default-beta", "spec": { "*": { "PLMDepartment": "=if(and(notEmpty(@(1,division_Code)), notEmpty(@(1,department_Code))), concat(@(1,division_Code),@(1,department_Code)), 'Invalid')" } } }, { "operation": "shift", "spec": { "*": { "PLMDepartment": "PLMDepartment" } } } ]
逻辑说明:
- modify-default-beta操作:
- 使用
if条件函数,结合and和notEmpty判断division_Code和department_Code是否均为非空字符串。 - 若两个字段都非空,执行
concat拼接操作生成PLMDepartment的值;否则将其设为"Invalid"。
- 使用
- shift操作:
- 提取每个数组元素中的PLMDepartment字段,将其映射到根层级,同时丢弃其他无关字段。
验证示例:
- 输入1:两个字段均非空,输出
"PLMDepartment": "FL3D4" - 输入2:
division_Code为空,输出"PLMDepartment": "Invalid" - 输入3:
department_Code为空,输出"PLMDepartment": "Invalid"
内容的提问来源于stack exchange,提问作者Thiyagaraj Narayanan
相关产品推荐
相关产品推荐

