如何使用 Jolt 将数组插入特定数组元素
How can I insert an array into a specific array element using Jolt
Question/problem
如何使用 Jolt 将数组插入数组中的特定对象?
输入
对象具有一组通用属性,但支持可选属性。
具体对象需要获取这些可选属性取决于它们在数组中的特定位置,即第二个([1]
)。这些可选属性将作为 jolt 转换的一部分添加。
{
"array" : [
{
"key" : "a key",
"value" : "a value"
},
{
"key" : "another key",
"value" : "another value"
}
]
}
预计
{
"array" : [
{
"key" : "a key",
"value" : "a value"
},
{
"key" : "another key",
"value" : "another value",
"values": ["extra value1", "extra value2"]
}
]
}
已经尝试过的
我试过 default
、modify-default-beta
、modify-overwrite-beta
和 none 似乎和我想象的一样。
默认
似乎默认忽略了数组引用 "[1]"
所以尝试了似乎支持这个的 beta 操作。
默认规格
[
{
"operation": "default",
"spec": {
"array": {
"[1]": {
"values": ["extra value1", "extra value2"]
}
}
}
}
]
默认实际值
{
"array" : [ {
"key" : "a key",
"value" : "a value"
}, {
"key" : "another key",
"value" : "another value"
} ]
}
修改默认测试版
解析数组引用 "[1]"
,但仅应用规范中数组中的第一个元素而不是整个数组
修改默认测试版规范
[
{
"operation": "modify-default-beta",
"spec": {
"array": {
"[1]": {
"values": ["extra value1", "extra value2"]
}
}
}
}
]
修改-默认-beta 实际
{
"array" : [ {
"key" : "a key",
"value" : "a value"
}, {
"key" : "another key",
"value" : "another value",
"values" : "extra value1" // array is dumped
} ]
}
修改覆盖测试版
尝试了 modify-overwrite-beta
,我得到了与 modify-default-beta
相同的行为。
修改覆盖测试版规范
[
{
"operation": "modify-overwrite-beta",
"spec": {
"array": {
"[1]": {
"values": ["extra value1", "extra value2"]
}
}
}
}
]
修改覆盖测试版实际
{
"array" : [ {
"key" : "a key",
"value" : "a value"
}, {
"key" : "another key",
"value" : "another value",
"values" : "extra value1" // array is dumped
} ]
}
有趣的旁注
如果输入中没有数组引用,这是一个相当简单的问题,当有数组引用和 *-beta
操作时,行为似乎不是我所期望的。
简单默认
我已经从输入中删除了数组
简单的默认输入
{
"element1": {
"key": "a key",
"value": "a value"
},
"element2": {
"key": "a key",
"value": "another value"
}
}
简单的默认规范
[
{
"operation": "default",
"spec": {
"element2": {
"values": ["extra value1", "extra value2"]
}
}
}
]
简单默认实际值
{
"element1" : {
"key" : "a key",
"value" : "a value"
},
"element2" : {
"key" : "another key",
"value" : "another value",
"values" : [ "extra value1", "extra value2" ]
}
}
这似乎是我对规范用法的误解。
看来您没有插入数组,而是要插入的每个元素。
[
{
"operation": "modify-default-beta",
"spec": {
"array": {
"[1]": {
"values": {
"[0]": "extra value1",
"[1]": "extra value2"
}
}
}
}
}
]
上面的规范将两个值都插入到值属性中,特别是插入到元素 "[0]"
和元素 "[1]"
中。
这也适用于 modify-overwrite-beta
操作
[
{
"operation": "modify-overwrite-beta",
"spec": {
"array": {
"[1]": {
"values": {
"[0]": "extra value1",
"[1]": "extra value2"
}
}
}
}
}
]
这两个规范的结果如下:
{
"array" : [ {
"key" : "a key",
"value" : "a value"
}, {
"key" : "another key",
"value" : "another value",
"values" : [ "extra value1", "extra value2" ]
} ]
}
Question/problem
如何使用 Jolt 将数组插入数组中的特定对象?
输入
对象具有一组通用属性,但支持可选属性。
具体对象需要获取这些可选属性取决于它们在数组中的特定位置,即第二个([1]
)。这些可选属性将作为 jolt 转换的一部分添加。
{
"array" : [
{
"key" : "a key",
"value" : "a value"
},
{
"key" : "another key",
"value" : "another value"
}
]
}
预计
{
"array" : [
{
"key" : "a key",
"value" : "a value"
},
{
"key" : "another key",
"value" : "another value",
"values": ["extra value1", "extra value2"]
}
]
}
已经尝试过的
我试过 default
、modify-default-beta
、modify-overwrite-beta
和 none 似乎和我想象的一样。
默认
似乎默认忽略了数组引用 "[1]"
所以尝试了似乎支持这个的 beta 操作。
默认规格
[
{
"operation": "default",
"spec": {
"array": {
"[1]": {
"values": ["extra value1", "extra value2"]
}
}
}
}
]
默认实际值
{
"array" : [ {
"key" : "a key",
"value" : "a value"
}, {
"key" : "another key",
"value" : "another value"
} ]
}
修改默认测试版
解析数组引用 "[1]"
,但仅应用规范中数组中的第一个元素而不是整个数组
修改默认测试版规范
[
{
"operation": "modify-default-beta",
"spec": {
"array": {
"[1]": {
"values": ["extra value1", "extra value2"]
}
}
}
}
]
修改-默认-beta 实际
{
"array" : [ {
"key" : "a key",
"value" : "a value"
}, {
"key" : "another key",
"value" : "another value",
"values" : "extra value1" // array is dumped
} ]
}
修改覆盖测试版
尝试了 modify-overwrite-beta
,我得到了与 modify-default-beta
相同的行为。
修改覆盖测试版规范
[
{
"operation": "modify-overwrite-beta",
"spec": {
"array": {
"[1]": {
"values": ["extra value1", "extra value2"]
}
}
}
}
]
修改覆盖测试版实际
{
"array" : [ {
"key" : "a key",
"value" : "a value"
}, {
"key" : "another key",
"value" : "another value",
"values" : "extra value1" // array is dumped
} ]
}
有趣的旁注
如果输入中没有数组引用,这是一个相当简单的问题,当有数组引用和 *-beta
操作时,行为似乎不是我所期望的。
简单默认
我已经从输入中删除了数组
简单的默认输入
{
"element1": {
"key": "a key",
"value": "a value"
},
"element2": {
"key": "a key",
"value": "another value"
}
}
简单的默认规范
[
{
"operation": "default",
"spec": {
"element2": {
"values": ["extra value1", "extra value2"]
}
}
}
]
简单默认实际值
{
"element1" : {
"key" : "a key",
"value" : "a value"
},
"element2" : {
"key" : "another key",
"value" : "another value",
"values" : [ "extra value1", "extra value2" ]
}
}
这似乎是我对规范用法的误解。
看来您没有插入数组,而是要插入的每个元素。
[
{
"operation": "modify-default-beta",
"spec": {
"array": {
"[1]": {
"values": {
"[0]": "extra value1",
"[1]": "extra value2"
}
}
}
}
}
]
上面的规范将两个值都插入到值属性中,特别是插入到元素 "[0]"
和元素 "[1]"
中。
这也适用于 modify-overwrite-beta
操作
[
{
"operation": "modify-overwrite-beta",
"spec": {
"array": {
"[1]": {
"values": {
"[0]": "extra value1",
"[1]": "extra value2"
}
}
}
}
}
]
这两个规范的结果如下:
{
"array" : [ {
"key" : "a key",
"value" : "a value"
}, {
"key" : "another key",
"value" : "another value",
"values" : [ "extra value1", "extra value2" ]
} ]
}