如何使用通配符遍历Jolt Spec?@(3,clientId)层级规则是什么
Jolt通配符遍历与@(level, key)用法解答
核心规则先明确
Jolt的shift操作是自上而下逐层匹配输入JSON的结构,spec的每一层对应输入JSON当前层级的键,匹配通过后进入下一层处理。
其中@(level, key)是向上回溯取值的语法:
- 层级计数相对于当前正在处理的输入JSON节点,不是spec的代码结构
- 计数规则:当前正在处理的输入节点为0层,每向上找一级父节点,层数加1
- 回溯到指定层级的节点后,会在该节点下查找名为
key的字段,返回对应的值
你的示例分步解析
匹配逻辑梳理
你提供的spec会按如下路径匹配输入:
- 先匹配根节点下的
data字段,拿到data对应的所有动态ID对象 - 用
*通配符遍历data下的所有动态键(也就是1234、1235) - 进入每个动态ID对象后,匹配
hidden字段 - 根据
hidden的布尔值进入true/false分支,执行输出映射
@(3,clientId)的取值逻辑
你编写@(3,clientId)的位置,当前处理的输入节点是hidden的布尔值(true/false),向上回溯3层后刚好到达包含clientId的动态ID对象,因此可以取到对应的12、35作为输出中clients对象的键。
完整输出生成逻辑
- 处理
1234对象时,hidden值为true,将固定值disabled写入输出clients.12路径 - 处理
1235对象时,hidden值为false,将固定值enabled写入输出clients.35路径 - 合并后就得到你看到的输出结果
内容的提问来源于stack exchange,提问作者Fasty
相关产品推荐
相关产品推荐

