使用JOLT为空数组添加默认值的技术实现问题
解决方案
要实现空数组添加占位符、非空数组保留原内容的需求,可以使用JOLT的modify-overwrite-beta操作,结合ifElse和size函数来判断数组长度并处理:
正确的JOLT配置
[ { "operation": "modify-overwrite-beta", "spec": { "my_array": "=ifElse(size(@) == 0, ['placeholder'], @)" } } ]
配置说明
modify-overwrite-beta:支持对已有字段的值进行修改覆盖size(@):获取当前my_array数组的长度ifElse(条件, 真值结果, 假值结果):当数组长度为0时,替换为["placeholder"];否则保留原数组内容@(代表当前字段的原始值)
之前方案失败原因
default操作失效:default仅对不存在的键生效,你的输入中my_array是存在的(即使是空数组),因此default不会覆盖已有值。shift操作报错:你编写的shift规则语法不符合JOLT规范,不能直接用"[]"作为空数组的匹配条件,导致解析时抛出异常。
内容的提问来源于stack exchange,提问作者ElielBerra
相关产品推荐
相关产品推荐

