如何编写JOLT Shift转换实现多级嵌套item的扁平化提取?
提取所有层级
item到数组的JOLT转换方案 通用JOLT Spec
这个Spec无需预先知晓JSON层级数量,能递归捕获所有深度的item字段并汇总到数组:
[ { "operation": "shift", "spec": { "**": { "item": "items[]" } } } ]
验证示例
2层级输入
{ "level1": { "item": "item1", "sub": { "item": "item2" } } }
转换后输出
{ "items": [ "item1", "item2" ] }
3层级输入
{ "level1": { "item": "item1", "sub": { "item": "item2", "deepSub": { "item": "item3" } } } }
转换后输出
{ "items": [ "item1", "item2", "item3" ] }
原理说明
**是JOLT的递归通配符,会匹配根节点下任意深度的所有节点- 对每个匹配到的节点,提取其
item字段的值,追加到items数组中 - 不管JSON有多少层级嵌套,只要节点下存在
item字段,都会被捕获并汇总
内容的提问来源于stack exchange,提问作者Michal
相关产品推荐
相关产品推荐

