[ { "operation": "shift", "spec": { "tag-*-*": "&(0,0)"//左边:* 是通配符,匹配所有以 tag- 开头的键、右边:& 是 Jolt 的引用操作符,用于提取匹配结果。 } } ] //&在LHS和RHS都能使用,&是引用操作符 //(0,1) 指定引用方式:0:表示整个匹配的键,如 tag-Pro、1:表示通配符 * 捕获的部分 //&(0,1) 的含义:取匹配键中第一个通配符捕获的部分(即删除 tag- 前缀) //在 Jolt 的 shift 操作中,& 是引用操作符,用于提取匹配模式中的特定部分。括号内的两个参数 (a,b) 分别表示: //a(层级回溯数):指定从当前匹配位置向上回溯的层级数**(0 表示当前层级,1 表示父级,以此类推) //b(通配符序号):指定使用第几个通配符捕获组**(从 1 开始计数) //简记:0 是“起点定位”,1 是“目标提取” //Jolt 通过路径层级管理数据匹配。a 参数控制回溯深度,解决嵌套结构问题: //**&(0,1)**:当前层级 → 直接取 * 内容(如 Pro) //**&(1,1)**:回溯一级父层级 → 若父级是数组/对象,可能取父级键名 //**&(2,1)**:回溯两级 → 更上层的键名 //&在输入路径寻找值: //{ // "foo" : { // "bar": { // "baz": // &0 = baz, &1 = bar, &2 = foo // } // } //} //需要指明使用第几个匹配值,比如说"tag-*-*"匹配到"tag-Foo-Bar",那么: // &(0,0) = "tag-Foo-Bar" // &(0,1) = "Foo" // &(0,2) = "Bar"