JOLT - Добавление полей в JSONArray на основе условия if - PullRequest
0 голосов
/ 20 марта 2020

У меня каверзный вопрос, насколько я знаю, я не видел никого с такой же проблемой, по крайней мере, не всех сразу!

У меня есть следующие тест JSON для преобразования:

INPUT

[
  {
    "test_id": 1212101011,
    "someDate": "2020-03-06",
    "keyToCheck": "true",
    "someData": "123"
  },
  {
    "test_id": 8787909099,
    "someDate": "2020-03-09",
    "keyToCheck": "false",
    "someData": "456"
  }
]

И я пытаюсь получить следующий вывод.

DESIRED

[{
   "test_id": 1212101011,
   "someDate": "2020-03-06",
   "keyToCheck": "true",
   "someData": "123",
   "objToAdd": {
      "id": "1",
      "label": "dummy1"
   }
},{
   "test_id": 8787909099,
   "someDate": "2020-03-09",
   "keyToCheck": "false",
   "someData": "456",
   "objToAdd": {
      "id": "2",
      "label": "dummy2"
}]

Мне уже удалось распространить все значения и при необходимости изменить имена полей, но добавление условия просто разрушает все. Кроме того, с текущим значением spe c, которое я имею, я не получаю массив после преобразования, который я уже могу получить с моим прежним spe c.

Спектр c, который у меня пока есть:

SPE C USED

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "keyToCheck": {
          "true": {
            "#1": "objToAdd.id",
            "#dummy1": "objToAdd.label"
          },
          "false": {
            "#2": "objToAdd.id",
            "#dummy2": "objToAdd.label"
          }
        }
      }
    }
  }
]

Но, как уже было сказано, это только давая мне это:

РЕЗУЛЬТАТ ТАК ЧАСТО

{
  "objToAdd" : {
    "id" : [ "1", "2" ],
    "label" : [ "dummy1", "dummy2" ]
  }
}

Что, похоже, является проблемой отступа. Добавление [& 1] до того, как значения в условии не помогли, и когда я распространяю значения с помощью "*": "[& 1]. &", Я теряю элемент, сгенерированный условием if-else.

Есть ли способ сделать это? Любая помощь будет оценена! Заранее спасибо.

1 Ответ

0 голосов
/ 14 апреля 2020

Проверьте это значение c,

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "test_id": "[&1].test_id",
        "someDate": "[&1].someDate",
        "someData": "[&1].someData",
        "keyToCheck": {
          "true": {
            "$": "[&3].keyToCheck",
            "#1": "[&3].objToAdd.id",
            "#dummy1": "[&3].objToAdd.label"
          },
          "false": {
            "$": "[&3].keyToCheck",
            "#2": "[&3].objToAdd.id",
            "#dummy2": "[&3].objToAdd.label"
          }
        }
      }
    }
  }
]
...