忽略输出中的隐式数组创建 JSON
Ignoring implicit Array creation in the output JSON
所以目前如果输入是
{
"foo": "bar",
"tuna": "marlin"
}
规格是
[
{
"operation": "shift",
"spec": {
"foo": "baz",
"tuna": "baz"
}
}
]
输出为
{
"baz" : [ "bar", "marlin" ]
}
如何让 jolt 不创建数组,而是用数组的最后一个元素覆盖“baz”键的值?
预期产出
{
"baz" : "marlin"
}
据我了解,您只想获取数组的最后一个元素。因此,为您的操作类型 modify-overwrite-beta 添加一个规范以及 lastElement() 函数,例如
[
{
"operation": "shift",
"spec": {
"*": "baz"
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": "=lastElement(@(1,&))"
}
}
]
其中无需在 shift 规范中明确写入每个键,而是用星号替换它们。然后,第二个规范中的星号也代表所有键(在这种情况下,这只是 baz
),旁边的&符号复制键的名称以表示相对值。
所以目前如果输入是
{
"foo": "bar",
"tuna": "marlin"
}
规格是
[
{
"operation": "shift",
"spec": {
"foo": "baz",
"tuna": "baz"
}
}
]
输出为
{
"baz" : [ "bar", "marlin" ]
}
如何让 jolt 不创建数组,而是用数组的最后一个元素覆盖“baz”键的值?
预期产出
{
"baz" : "marlin"
}
据我了解,您只想获取数组的最后一个元素。因此,为您的操作类型 modify-overwrite-beta 添加一个规范以及 lastElement() 函数,例如
[
{
"operation": "shift",
"spec": {
"*": "baz"
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": "=lastElement(@(1,&))"
}
}
]
其中无需在 shift 规范中明确写入每个键,而是用星号替换它们。然后,第二个规范中的星号也代表所有键(在这种情况下,这只是 baz
),旁边的&符号复制键的名称以表示相对值。