Как сгладить массив объектов во время зацикливания в Jolt Transformation? - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь использовать Jolt для преобразования моего входящего сообщения в список определенных пользовательских объектов.

Однако в случае вложенных значений во входящем массиве я не могу получить желаемый вывод.

Входящее сообщение:

[
  {
    "type": "Hourly",
    "employeeIdDetails": [
      {
        "id": "900",
        "idType": "HR_EMP"
      }
    ]
  },
  {
    "type": "Salaried",
    "employeeIdDetails": [
      {
        "id": "436",
        "idType": "SAL_EMP"
      },
      {
        "id": "111",
        "idType": "SAL_EMP"
      }
    ]
  },
  {
    "type": "Salaried",
    "employeeIdDetails": [
      {
        "id": "437",
        "idType": "SAL_EMP"
      }
    ]
  }
]

Толчок c

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "type": {
          "Salaried": {
            "@2": {
              "employeeIdDetails": {
                "*": {
                  "idType": {
                    "SAL_EMP": {
                      "@2": {
                        "id": "test[&4].ids",
                        "idType": "test[&4].types"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

Токовый выход:

{
  "test" : [ {
    "ids" : [ "436", "437" ],
    "types" : [ "SAL_EMP", "SAL_EMP" ]
  }, {
    "ids" : "111",
    "types" : "SAL_EMP"
  } ]
}

Ожидаемый результат

{
  "test" : [ {
    "ids" : "436",
    "types" : "SAL_EMP"
  } ,
{
    "ids" : "111",
    "types" : "SAL_EMP"
  } ,
 {
    "ids" : "437",
    "types" : "SAL_EMP"
  } ]
}

Порядок не имеет для меня никакого значения, кроме наличия всех объектов.

проблема, я думаю, я обнаружил, до сих пор использует "&". Но не уверен, как я могу объединить значения в 1 объект без этого.

1 Ответ

0 голосов
/ 22 января 2020

Может быть, этот путь тебе подходит?

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "type": {
          "Salaried": {
            "@(2,employeeIdDetails)": {
              "*": {
                "idType": {
                  "SAL_EMP": {
                    "@2": "test[]"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "test": {
        "*": {
          "id": "test[&1].ids",
          "idType": "test[&1].types"
        }
      }
    }
  }
]
...