我试图构造一个JOLT转换,这样如果参数名在给定数组中匹配,它将更改参数值。
输入示例:
{
"component": {
"parameters": [
{
"parameter": {
"name": "var_name",
"value": "val"
}
},
{
"parameter": {
"name": "1",
"value": "2"
}
}
]
},
"additional": "onemore"
}
预期输出:
{
"component": {
"parameters": [
{
"parameter": {
"name": "var_name",
"value": "new_val"
}
},
{
"parameter": {
"name": "1",
"value": "2"
}
}
]
},
"additional": "onemore"
}
我当前的JOLT转换:
[
{
"operation": "shift",
"spec": {
"component": {
"parameters": {
"*": {
"parameter": {
"name": {
"var_name": {
"#new_val": "&6.&5[&4].&3.value"
}
}
}
}
}
}
}
}
]
我的JOLT转换的问题是,它删除了Json的其余部分,而我希望在没有匹配的情况下保持不变
我试着寻找一个解决方案,但最接近的是this one,它允许我进行电流转换,但我不知道如何正确地修复它。
- 编辑:**
实际上,在编写示例时,我遗漏了部分输入,但多亏了@Barbaros Özhan的回答,我才得以完成转换。
对于未来的参考,如果其他人需要它,我原来的输入有附加字段,如:
{
"component": {
"parameters": [
{
"option": "true",
"parameter": {
"name": "var_name",
"description": "desc",
"value": "val"
}
},
{
"option": "false",
"parameter": {
"name": "1",
"description": "desc",
"value": "2"
}
}
],
"other value": "baz"
},
"additional": "onemore"
}
我使用的最后一个变换稍微做了一些调整,以考虑如下情况:
[
{
"operation": "shift",
"spec": {
"component": {
"parameters": {
"*": {
"parameter": {
"name": {
"@": "&5.&4[&3].&2.&1",
"var_name": {
"#new_val": "&6.&5[&4].&3.value"
},
"*": {
"@(2,value)": "&6.&5[&4].&3.value"
}
},
"value": "&6.&5[&4].&3.value",
"*": "&4.&3[&2].&1.&"
},
"*": "&3.&2[&1].&"
}
},
"*": "&1.&"
},
"*": "&"
}
}
]
1条答案
按热度按时间pod7payv1#
您可以使用此shift转换规范