невозможно преобразовать список json в объекты с помощью jolt

Мне нужно использовать преобразование jolt, чтобы выполнить приведенное ниже преобразование JSON.

нужно создать новые столбцы из списка из столбца reeval, где иногда мы получаем только одно значение, а иногда мы получаем несколько значений моих входных данных: -

пример 1:

{
  "id":"1",
  "reeval":["one","two"]
}

пример 2:

{
  "id":"2",
  "reeval":["one","two","three"]
}

пример 3:

{
  "id":"3",
  "reeval":["one"]
}

Я написал jolt expresson, как показано ниже

[
   {
     "operation": "shift",
     "spec": {
       "id": "id",
       "reeval": {
         "*": "&"
       }
     }
  }
]

с вышеуказанным выражением толчка работает нормально, но невозможно добавить вывод имени столбца для вышеуказанного толчка, как показано ниже

пример 1:

{
  "id" : "1",
  "0" : "one",
  "1" : "two"
}

пример 2:

{
  "id" : "2",
  "0" : "one",
  "1" : "two",
  "2" : "three"
}

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

пример 1:

{
  "id":"1",
  "reeval":"one",
  "reeval1":"two"
}

пример 2:

{
  "id":"2",
  "reeval":"one",
  "reeval1":"two",
  "reeval2":"three"
}

пример 3:

{
  "id":"3",
  "reeval":"one"
}

person Rahul Varma    schedule 24.12.2020    source источник


Ответы (1)


Добавление &1 к текущему амперсанду было бы достаточно, чтобы подняться на один уровень вверх по дереву и получить имя ключа в первом преобразовании shift, а затем применить другое, чтобы переименовать только ключ с нулевым индексом, например в качестве

[
  {
    "operation": "shift",
    "spec": {
      "id": "id",
      "reeval": {
        "*": "&1&"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "reeval0": "reeval",
      "*": "&"
    }
  }
]
person Barbaros Özhan    schedule 02.06.2021