如何编写Jolt转换规范以遍历多数组并实现指定输出?
Jolt转换实现方案
输入JSON
{ "a": [ [ "a1" ], [ "a2" ] ], "b": [ [ "b1", "b2" ], [ "b3", "b4" ] ], "c": [ [ "c1" ], [ "c2" ] ] }
期望输出JSON
[ { "a": "a1", "b": "b1", "c": "c1" }, { "a": "a1", "b": "b2" }, { "a": "a2", "b": "b3", "c": "c2" }, { "a": "a2", "b": "b4" } ]
实现的Jolt转换规则
[ { "operation": "shift", "spec": { "*": { "*": { "*": { "@": "[&2-&1].&3" } } } } }, { "operation": "remove", "spec": { "*": { "c": { "$null": "" } } } } ]
规则逻辑说明
- Shift操作阶段:利用Jolt的索引引用,
&2代表最外层数组的索引(比如a的第一个子数组索引为0,第二个为1),&1代表内层数组的索引(比如b的第一个子数组内层索引为0、1),将两者拼接成最终数组的位置键[&2-&1],这样就能把同组的字段(如a[0][0]、b[0][0]、c[0][0])映射到同一个对象中;&3则取最外层的键名(a、b、c)作为输出对象的键。 - Remove操作阶段:由于c数组的每个子数组仅含一个元素,转换后会出现null值的c字段,通过该操作移除这些无效的null字段,得到最终的目标输出。
内容的提问来源于stack exchange,提问作者tl98513
相关产品推荐
相关产品推荐

