请求提供JOLT转换规则:提取指定JSON字段至顶层
JOLT转换方案:提取指定paramid到顶层并过滤原数组
需求回顾
需要从输入JSON的C.E.treefield数组中,将paramid为k2的项提取到JSON顶层(值为该项的paramvalue.string),同时移除原数组中的该项,其余所有结构保持不变。
输入JSON
{ "A": "value1", "B": "value2", "C": { "D": "x1", "E": { "treefield": [ { "paramid": "k1", "paramvalue": { "string": "value1" } }, { "paramid": "k2", "paramvalue": { "string": "value2" } }, { "paramid": "k3", "paramvalue": { "string": "value3" } } ] }, "F": { "a": "x1", "x": { "y": 1 } }, "H": "x4" } }
目标输出JSON
{ "A": "value1", "B": "value2", "C": { "D": "x1", "E": { "treefield": [ { "paramid": "k1", "paramvalue": { "string": "value1" } }, { "paramid": "k3", "paramvalue": { "string": "value3" } } ] }, "F": { "a": "x1", "x": { "y": 1 } }, "H": "x4" }, "k2": "value2" }
JOLT转换规范
[ { "operation": "shift", "spec": { "*": "&", "C": { "*": "C.&", "E": { "treefield": { "*": { "paramid": { "k2": { "@(2,paramvalue.string)": "k2" }, "*": { "@2": "C.E.treefield[]" } } } } } } } } ]
规范详解
"*": "&":将所有顶层字段(A、B、C)直接映射到输出的对应位置,确保原有顶层数据完整保留。"C": { "*": "C.&" }:保留C对象下的所有子属性(D、F、H),维持原有的嵌套结构不变。- 针对
C.E.treefield数组的处理:- 遍历数组中的每一项,通过
paramid进行分支判断:- 当
paramid等于k2时,使用@(2,paramvalue.string)向上两层获取当前项的paramvalue.string值,将其映射到顶层的k2字段。 - 当
paramid为其他值时,使用@2获取整个当前项对象,将其添加到C.E.treefield数组中,自动完成对k2项的过滤,同时保留其他项的完整结构。
- 当
- 遍历数组中的每一项,通过
内容的提问来源于stack exchange,提问作者TJJ
相关产品推荐
相关产品推荐

