在JOLT规范中RHS中[]的意义是什么?



我是JOLT的新手。我正在创建一个JOLT规范,将JSON从一种格式解析为另一种格式。然而,当我使用RHS"&1.name"时它没有像预期的那样工作,并且创建了不同的格式。但是当我使用"[&1].name"

由于策略限制,我无法共享数据。举个例子

。输入JSON:

[
{
"name": "my name1"
},
{
"name": "my name2"
}
]

JOLT规范(不工作):

[
{
"operation": "shift",
"spec": {
"*": {
"name": "&1.name"
}
}
}
]

JOLT规范(working):

[
{
"operation": "shift",
"spec": {
"*": {
"name": "[&1].name"
}
}
}
]

请帮助我理解[]在RHS上的目的。

两个规格都有效

&1: .

[&1]: 索引.

例如,在你的规范中,&1意味着01作为你的输出可以像这样:
{
"0": {
"name": "my name1"
},
"1": {
"name": "my name2"
}
}

当您使用[&1]时,意味着01作为索引的数组,你的输出可以像这样:

[
{
"name": "my name1"
},
{
"name": "my name2"
}
]

您甚至可以通过替换name在右侧加&符号&

[
{
"operation": "shift",
"spec": {
"*": {
"name": "[&1].&"
}
}
}
]

为了复制它

[&1]and&11通过遍历左花括号({)来达到最外层数组的索引级别。)一次。但是第一个生成的是数组结果,而不是索引号0,1,2…这些是由第二个生成的。

最新更新