JOLT - 条件动态默认值
JOLT - Conditional dynamic default values
我需要一种将数据从一个数组直接转移到另一个数组的转换。我的主要问题是输入 dependant
数组有时可能为空。对于这些情况,有一个 master
数组定义了 result
数组的长度。
总而言之,我需要:
- 将数据从
dependant
移至 result
。
- 如果没有数据移动,则根据
master
数组长度指定默认值。
举几个例子:
案例 1(正常移动数据)
输入:
{
"master": [
{
"a": "a1",
"b": "b1"
},
{
"a": "a2",
"b": "b2"
}
],
"dependant": [
{
"data": "AA"
},
{
"data": "BB"
}
]
}
期望的输出:
{
"result": [ "AA", "BB" ]
}
案例 2
dependant
数组为空,我们需要创建与 master
长度相同的 result
数组。每个元素可以是任何字符串,例如 DEFAULT
.
输入:
{
"master": [
{
"a": "a1",
"b": "b1"
},
{
"a": "a2",
"b": "b2"
}
],
"dependant": []
}
输出:
{
"result": [ "DEFAULT", "DEFAULT" ]
}
您可以连续应用 modify-overwrite-beta 和 shift 转换,例如
[
{
"operation": "modify-overwrite-beta",
"spec": {
"szdependant": "=size(@(1,dependant))"
}
},
{
"operation": "shift",
"spec": {
"szdependant": {
"0": {
"@(2,master)": { "*": { "#DEFAULT": "result" } }
},
"*": {
"@(2,dependant)": { "*": { "*": "result" } }
}
}
}
}
]
为了使用 dependant
列表的大小值 (szdependant
) 作为 shift 转换步骤中的条件语句
我需要一种将数据从一个数组直接转移到另一个数组的转换。我的主要问题是输入 dependant
数组有时可能为空。对于这些情况,有一个 master
数组定义了 result
数组的长度。
总而言之,我需要:
- 将数据从
dependant
移至result
。 - 如果没有数据移动,则根据
master
数组长度指定默认值。
举几个例子:
案例 1(正常移动数据)
输入:
{
"master": [
{
"a": "a1",
"b": "b1"
},
{
"a": "a2",
"b": "b2"
}
],
"dependant": [
{
"data": "AA"
},
{
"data": "BB"
}
]
}
期望的输出:
{
"result": [ "AA", "BB" ]
}
案例 2
dependant
数组为空,我们需要创建与 master
长度相同的 result
数组。每个元素可以是任何字符串,例如 DEFAULT
.
输入:
{
"master": [
{
"a": "a1",
"b": "b1"
},
{
"a": "a2",
"b": "b2"
}
],
"dependant": []
}
输出:
{
"result": [ "DEFAULT", "DEFAULT" ]
}
您可以连续应用 modify-overwrite-beta 和 shift 转换,例如
[
{
"operation": "modify-overwrite-beta",
"spec": {
"szdependant": "=size(@(1,dependant))"
}
},
{
"operation": "shift",
"spec": {
"szdependant": {
"0": {
"@(2,master)": { "*": { "#DEFAULT": "result" } }
},
"*": {
"@(2,dependant)": { "*": { "*": "result" } }
}
}
}
}
]
为了使用 dependant
列表的大小值 (szdependant
) 作为 shift 转换步骤中的条件语句