如何通过JOLT根据子节点ID修改其Status属性?
JOLT 根据子节点ID修改对应Status值的解决方案
输入JSON
{ "Level0": { "Level-1": { "ID": 10, "Status": "OK" }, "Level-2": { "ID": 20, "Status": "OK" }, "Level-3": { "ID": 30, "Status": "OK" } } }
可行的JOLT转换规范
[ { "operation": "modify-overwrite-beta", "spec": { "Level0": { "*": { "Status": "=concat(@(1,ID) == 20 ? 'Running' : @(1,Status))" } } } } ]
转换后输出JSON
{ "Level0": { "Level-1": { "ID": 10, "Status": "OK" }, "Level-2": { "ID": 20, "Status": "Running" }, "Level-3": { "ID": 30, "Status": "OK" } } }
逻辑说明
*通配符用于匹配Level0下的所有子节点,无需逐个指定节点名称@(1,ID)表示向上遍历1层,获取当前子节点的ID属性值- 利用三元运算符做条件判断:当
ID等于20时,将Status覆盖为Running;其余节点保留原有Status值 modify-overwrite-beta操作支持这种带条件的赋值,能精准完成目标修改
内容的提问来源于stack exchange,提问作者Timo W.
相关产品推荐
相关产品推荐

