JOLT转换中如何处理HMEmails空数组的条件逻辑?
JOLT Shift 处理空数组替换问题
需求明确:字段HMEmails需遵循以下转换规则:
- 非空数组:保留原数组内容
- 空字符串或空数组:替换为
"....."
现有spec已实现前两种场景,但空数组输入时HMEmails字段会丢失——原因是空数组既匹配不到数组元素的*规则,也不属于空字符串的""规则,导致没有对应转换逻辑触发。
修正后的JOLT Spec
[ { "operation": "shift", "spec": { "*": { "Place": "[&1].&", "HMEmails": { "*": { "@": "[&3].&2" // 非空数组时保留原内容 }, "": { "#.....": "[&3].&2" // 空字符串时替换为..... }, "$": { "[]": { "#.....": "[&4].&3" // 空数组时替换为..... } } }, "Recruit": "[&1].&" } } } ]
关键说明
- 新增的
"$": { "[]": {...} }规则,通过$引用HMEmails字段本身,用[]匹配空数组类型,触发替换逻辑。 - 层级引用
&4是因为嵌套层级:从空数组的匹配规则往上数,第4层对应外层的数组索引(即原spec中[&1]的层级),&3对应HMEmails字段名。
测试验证
- 非空数组输入:输出保留原数组内容,符合预期;
- 空字符串输入:输出
".....",符合预期; - 空数组输入:输出
".....",字段不再丢失,符合预期。
内容的提问来源于stack exchange,提问作者ElielBerra
相关产品推荐
相关产品推荐

