Jolt — Условное обновление значения LHS

#jolt

Вопрос:

У меня в основном есть 2 разных условия, которые могут повлиять на значение ключа в выводе.
У меня есть следующий ввод:

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

У меня есть следующие спецификации:

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

Теперь, если вы видите, что оба условия верны, конечный результат выглядит следующим образом. Оба значения представлены в виде массива

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

Но я ищу выход, основанный на втором условии. В основном переопределите существующее значение в атрибуте «ответ» :

 {
  "answer" : "ANSWER2"
}
 

Ответ №1:

Вы можете добавить еще одно преобразование сдвига

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

к существующей спецификации, чтобы выбрать второй(элемент с индексом 1 ) элемент.

Если бы был выбран левый элемент массива, то можно было бы предпочесть использовать преобразование мощности

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