求实现1减去数组元素的Jolt转换规格(Spec)
求实现1减去数组元素的Jolt转换规格(Spec)
嘿,针对你这个需求,我整理了一个合适的Jolt转换规格,刚好能实现把指定数组的每个元素用1去减,同时保留其他字段不变的效果,而且完全适配数组元素数量变化的场景!
先直接上可用的Jolt Spec:
[ { "operation": "modify-overwrite-beta", "spec": { "value1": { "*": "=minus(1,@(1))" }, "value2": { "*": "=minus(1,@(1))" }, "value3": { "*": "=minus(1,@(1))" } } }, { "operation": "shift", "spec": { "*": "&" } } ]
给你详细解释下这个规格的逻辑:
- modify-overwrite-beta操作:这一步是核心的计算环节。
value1/value2/value3下的*是通配符,会匹配数组里的每一个元素;=minus(1,@(1))就是执行1 - 当前元素值的计算,@(1)指代当前被匹配到的数组元素值,计算后会覆盖原来的元素值。 - shift操作:这一步是为了确保所有其他字段(比如
id、name、otherField)都能原封不动地保留到输出结果里,*匹配所有字段,&表示将字段名和对应的值原样映射过去。
这个方案的优势就是不管你的数组里有几个元素,通配符*都会逐个处理,完全不用关心元素数量的变化~你可以把这个Spec放到Jolt的测试工具里验证一下效果哦!
备注:内容来源于stack exchange,提问作者Vyshnavi
相关产品推荐
相关产品推荐

