求满足if-else条件的Jolt Spec:依据yang:operation处理desc字段
Jolt条件逻辑配置解决方案
需要实现Jolt的if-else逻辑:当yang:operation字段值为delete时,将同级的desc字段放入no节点下;否则直接保留desc字段原结构。现有配置未触发条件分支,以下是具体输入、现有配置、期望输出及正确配置。
输入JSON
{ "ABC": [ { "@desc": { "yang:operation": "delete" }, "desc": "attr1" } ] }
现有Jolt配置(未生效)
[ { "operation": "shift", "spec": { "ABC": { "*": { "\@desc": { "yang:operation": { "#delete": { "desc": "no.desc.\$\.DESC.\.DESC" }, "*": { "desc": "desc.\$\.DESC.\.DESC" } } }, "desc": "desc.\$\.DESC.\.DESC" } } } } ]
期望输出
{ "no" : { "desc" : { "$.DESC" : { ".DESC" : "attr1" } } } }
正确的Jolt配置
[ { "operation": "shift", "spec": { "ABC": { "*": { "@desc": { "yang:operation": { "delete": { // 向上回溯两层引用同级的desc字段 "&2.desc": "no.desc.\\$.DESC.\\.DESC" }, "*": { "&2.desc": "desc.\\$.DESC.\\.DESC" } } } } } } } ]
配置说明
- 条件匹配修正:原配置中
#delete是生成固定字符串,无法匹配yang:operation的字段值,改为直接用"delete"匹配目标值。 - 字段引用修正:在
yang:operation层级下,用&2.desc向上回溯两层,定位到包含@desc和desc的父对象,正确获取desc的内容。 - 移除冗余配置:删除原配置中单独定义的
"desc": "desc.\\$.DESC.\\.DESC",避免覆盖条件分支的结果。
内容的提问来源于stack exchange,提问作者Shyampal
相关产品推荐
相关产品推荐

