Jolt - 有条件地更新 LHS 值

Jolt - Conditional update LHS value

我基本上有 2 个不同的条件可以影响输出中键的值。
我有以下输入:

{
  "state": "PRESENT",
  "sample": {
    "type": "OP"
  }
}

我有以下规格:

[
  {
    "operation": "shift",
    "spec": {
      "state": {
        "PRESENT": {
          "#ANSWER1": "answer"
        },
        "*": {
          "$": "answer"
        }
      },
      "sample":{
        "type":{
          "OP":{
            "#ANSWER2": "answer"
          }
        }
      }
    }
  }
]

现在如果你看到两个条件都为真,最终输出如下。这两个值都以数组形式出现

{
  "answer" : [ "ANSWER1", "ANSWER2" ]
}

但我正在寻找基于第二个条件的输出。基本上覆盖“answer”属性中的现有值:

{
  "answer" : "ANSWER2"
}

你可以再添加一个shift转换

{
  "operation": "shift",
  "spec": {
    "*": { "1": { "@": "&2" } }
  }
}

为了选择第二个(索引为 1 的元素)现有规范。

如果选择数组的左侧元素是这种情况,那么基数 转换 可能更适合使用

{
  "operation": "cardinality",
  "spec": {
    "*": "ONE"
  }
}