JOLT规范中RHS的[]有何作用?为何带[]的Shift规则才生效?
JOLT Shift中RHS方括号
[]的作用解析 在你的场景里,核心区别在于JOLT如何解析回溯引用&1的结果,方括号[]的作用是强制生成数组结构,具体拆解如下:
回溯引用
&1的含义&n是JOLT Shift里的回溯语法,用来获取当前路径往上第n层的键名。你的输入是数组,*匹配的是数组的索引(0、1这类数字字符串),所以&1会拿到这些索引值。无方括号的情况:
&1.name
当你直接写&1.name时,JOLT会把&1解析出的索引(比如"0")当作对象的键名,最终输出会变成一个普通对象,结构是:
{ "0": { "name": "my name1" }, "1": { "name": "my name2" } }
这显然不是你想要的数组结构。
- 有方括号的情况:
[&1].name[]是JOLT里专门用来标记数组的语法,它告诉JOLT:把&1解析出的索引值当作数组的下标,将对应的数据放到数组的指定位置。最终输出会保持数组结构:
[ { "name": "my name1" }, { "name": "my name2" } ]
简单说,[]的核心作用就是明确告诉JOLT要生成数组,而不是对象,让回溯引用的索引值对应数组的下标,而非对象的键。
内容的提问来源于stack exchange,提问作者Shrey Bansod
相关产品推荐
相关产品推荐

