寻找Jolt中替代head的方法,提取JSON数组首个非空非null字符串
Jolt提取数组首个非空/非null值的实现方案
当然可以实现,不用依赖head函数,通过Jolt的多步转换组合就能达成需求。核心思路是先过滤掉数组中code为null或空字符串的元素,再从剩余有效元素里取第一个值映射到目标字段。
具体Jolt转换规则
[ { "operation": "shift", "spec": { "part": { "subline": { "sublineGroup": { "sublineGroupTP": { "detailsGP": { "*": { "dtlLine": { "details": { "code": { "!null": { "!": { "@": "validCodes[]" } } } } } } } } } } } } }, { "operation": "modify-overwrite-beta", "spec": { "countryCode": "${validCodes[0]}" } }, { "operation": "remove", "spec": { "validCodes": "" } } ]
规则说明
- 第一步(shift):遍历
detailsGP数组的每一项,仅收集code既不是null也不是空字符串的值到临时数组validCodes中。 - 第二步(modify-overwrite-beta):提取
validCodes数组的第一个元素,赋值给countryCode字段。 - 第三步(remove):清理临时生成的
validCodes数组,只保留最终需要的countryCode。
验证结果
将你提供的输入JSON传入上述Jolt规则后,会得到期望的输出:
{ "countryCode": "US" }
内容的提问来源于stack exchange,提问作者Prasad S Deshpande
相关产品推荐
相关产品推荐

