Jolt Transformation - 替换所有匹配项
Jolt Transformation - Replace all matches
我正在尝试使用 https://jolt-demo.appspot.com/ 进行 JOLT 转换。
我想用“7.11”替换所有 "master" 值。
输入:
{
"build": [
{
"number": "7.11.13898",
"branchName": "branch1"
},
{
"number": "7.11.13896",
"branchName": "branch2"
},
{
"number": "7.11.13895",
"branchName": "master"
},
{
"number": "7.11.13900",
"branchName": "master"
}
]
}
期望的输出:
{
"build": [
{
"number": "7.11.13898",
"branchName": "branch1"
},
{
"number": "7.11.13896",
"branchName": "branch2"
},
{
"number": "7.11.13895",
"branchName": "7.11"
},
{
"number": "7.11.13900",
"branchName": "7.11"
}
]
}
如果没有 changing/altering 数据结构,我似乎无法获得有效的转换或转换。
当前方法:
[
{
"operation": "shift",
"spec": {
"build": {
"*": {
"number": "build[&1].number",
"branchName": {
"master": {
"#7.11": "build[&3].branchName"
},
"*": {
"@(2, branchName)": "build[&3].branchName"
}
}
}
}
}
}
]
当前输出:
{
"build" : [ {
"number" : "7.11.13898"
}, {
"number" : "7.11.13896"
}, {
"branchName" : "7.11",
"number" : "7.11.13895"
} ]
}
你快找到了。您需要将 @(2, branchName)
替换为 $
,它应该适合您。
The "$" operator means use the input key, instead of the input value
as output.
解决方案:
[
{
"operation": "shift",
"spec": {
"build": {
"*": {
"number": "build[&1].number",
"branchName": {
"master": {
"#7.11": "build[&3].branchName"
},
"*": {
"$": "build[&3].branchName"
}
}
}
}
}
}
]
我正在尝试使用 https://jolt-demo.appspot.com/ 进行 JOLT 转换。
我想用“7.11”替换所有 "master" 值。
输入:
{
"build": [
{
"number": "7.11.13898",
"branchName": "branch1"
},
{
"number": "7.11.13896",
"branchName": "branch2"
},
{
"number": "7.11.13895",
"branchName": "master"
},
{
"number": "7.11.13900",
"branchName": "master"
}
]
}
期望的输出:
{
"build": [
{
"number": "7.11.13898",
"branchName": "branch1"
},
{
"number": "7.11.13896",
"branchName": "branch2"
},
{
"number": "7.11.13895",
"branchName": "7.11"
},
{
"number": "7.11.13900",
"branchName": "7.11"
}
]
}
如果没有 changing/altering 数据结构,我似乎无法获得有效的转换或转换。 当前方法:
[
{
"operation": "shift",
"spec": {
"build": {
"*": {
"number": "build[&1].number",
"branchName": {
"master": {
"#7.11": "build[&3].branchName"
},
"*": {
"@(2, branchName)": "build[&3].branchName"
}
}
}
}
}
}
]
当前输出:
{
"build" : [ {
"number" : "7.11.13898"
}, {
"number" : "7.11.13896"
}, {
"branchName" : "7.11",
"number" : "7.11.13895"
} ]
}
你快找到了。您需要将 @(2, branchName)
替换为 $
,它应该适合您。
The "$" operator means use the input key, instead of the input value as output.
解决方案:
[
{
"operation": "shift",
"spec": {
"build": {
"*": {
"number": "build[&1].number",
"branchName": {
"master": {
"#7.11": "build[&3].branchName"
},
"*": {
"$": "build[&3].branchName"
}
}
}
}
}
}
]