JOLT 转换删除特定字段

JOLT transformation remove a specific field

Edit1:我的目标是能够删除具有特定值的特定属性。在我的例子中,rating 属性只要有一个“?”就应该被删除。作为内容。 “评分”: ”?” => 应该删除 "rating": "1" => 不应删除

大家好,有什么方法可以不删除某种类型的所有属性,而只删除具有特定内容的属性?例子: “测试1”:“123”, “测试 1”:“?”

这里我只想删除 test1:"?"。

输入:

{
  "TEST": {
    "revision": "2021",
    "results": [
      {
        "parameter": "Abweichung X L/R",
        "example": "123",
        "rating": "1"
      },
      {
        "parameter": "10001",
        "example": "BIN7934659050003696",
        "rating": "?"
      },
      {
        "parameter": "1015 Bauteil niO",
        "rating": "0"
      }
    ]
  }
}

期望输出:

{
  "TEST": {
    "revision": "2021",
    "results": [
      {
        "parameter": "Test",
        "example": "123456",
        "rating": "1"
      },
      {
        "parameter": "10001",
        "example": "123"
      },
      {
        "parameter": "Test123",
        "rating": "0"
      }
    ]
  }
}

除内容为“?”的评分外的所有“评分”留下来。

提前致谢并致以诚挚的问候

您可以使用下面的 shift 转换规范来删除值为 ?[=41 的 rating 属性=]

[
  {
    "operation": "shift",
    "spec": {
      "TEST": {
        "*": "&1.&",
        "results": {
          "*": {
            "rating": {
              "?": {
                "@(2,parameter)": "&5.&4.[&3].parameter",
                "@(2,example)": "&5.&4.[&3].example"
              },
              "*": {
                "@2": "&5.&4.[&3]"
              }
            }
          }
        }
      }
    }
  }
]

哪里

"*"" 表示其余键(revision 在这种情况下)未指定(结果

最上面的&1&5代表最外层的key(TEST)

&4代表数组的(结果)名称

由于数组的索引(results)作为共同中心