json 知道如何获得if-else条件的Jolt Spec吗

fnx2tebb  于 2023-04-08  发布在  其他
关注(0)|答案(1)|浏览(131)

我有下面的Jolt,并希望将desc body放入**"no"without "no"**中,具体取决于"yang:operation"中定义的delete操作。尝试了下面的Jolt,但看起来没有达到"\\@desc"中定义的条件:
输入JSON

{
  "ABC": [
    {
      "@desc": {
        "yang:operation": "delete"
      },
      "desc": "attr1"
    }
  ]
}

提供震动规范

[
  {
    "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"
      }
    }
  }
}
njthzxwz

njthzxwz1#

事实上,你是如此接近解决方案,只有最里面的desc键应该用#通配符限定,例如#desc;而不是顶级delete密钥。
因此,您可以使用以下规范重试:

[
  {
    "operation": "shift",
    "spec": {
      "ABC": {
        "*": {
          "\\@desc": {
            "yang:operation": {
              "delete": {
                "#desc": "no.desc.\\$\\.DESC.\\.DESC"
              },
              "*": {
                "#desc": "desc.\\$\\.DESC.\\.DESC"
              }
            }
          }
        }
      }
    }
  }
]

和外部(第二)"desc": "desc.\\$\\.DESC.\\.DESC"似乎没有意义,只要删除它。

相关问题