我正在使用jolt进行一些转换,虽然已经可以做到,但是在替换JSON文件某些属性中的某些文本时遇到了一些问题。
我试图用/分割值,然后用另外的文字连接我需要的部分,不幸的是,这没用。
输入JSON
{
"components" : {
"values" : {
"value1" : {
"$path" : "1/2/3/bear"
},
"value2" : {
"$path" : "1/2/3/cat"
},
"value3" : {
"$path" : "1/2/3/lion"
}
}
}
}
我想在最后的$ path值中添加'#/ myvalue /'。
预期结果
{
"components" : {
"values" :
"value1" : {
"$path" : "#/myvalue/bear"
},
"value2" : {
"$path" : "#/myvalue/cat"
},
"value3" : {
"$path" : "#/myvalue/lion"
}
}
}
}
为了获得价值,我尝试了以下一种方法,但效果不如预期。
[
{
"operation": "shift",
"spec": {
"components": {
"values": {
"*": {
"\\$path": { //This key has de $ sign
"*/*/*/*": {
"$(0,4)": "\\$path" //I need to take the four part and assign that to the \\path value
}
}
}
}
}
}
}, {
"operation": "modify-overwrite-beta",
"spec": {
"components": {
"values": {
"*": {
"\\$path": "=concat('#/myvalue/', @(1,\\$path))"
}
}
}
}
}
]
答案 0 :(得分:0)
您需要做的就是使用jolt提供的某些功能(例如split,last element,concat等)来操纵原始路径字符串
此规范可以解决问题:
[{
"operation": "modify-overwrite-beta",
"spec": {
"components": {
"values": {
"*": {
"temp": "=split('/',@(1,\\$path))",
"last_element": "=lastElement(@(1,temp))",
"\\$path": "=concat(#/myvalue/,@(1,last_element))"
}
}
}
}
}, {
"operation": "shift",
"spec": {
"components": {
"values": {
"*": {
"\\$path": "components.values.&1.&"
}
}
}
}
}]