Как переименовать все элементы в массиве в JSON с помощью JOLT? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть данные JSON, поступающие через внешнее приложение A, которые необходимо отправить в приложение B. И прежде чем данные поступят в приложение B, все атрибуты в json необходимо переименовать.

Например, структура входящих данных json имеет вид -

{
  "Array1": [
    {
      "field1": "foo1",
      "field2": [
        "bar1",
        "bar2"
      ]
    },
    {
      "field1": "foo2",
      "field2": [
        "bar3",
        "bar4"
      ],

      ...

        {
      "field1": "fooN",
      "field2": [
        "barX",
        "barY"
      ] 

    }
  ]
}

Где количество элементов в Array1 являются переменными для каждой записи.

Ожидаемый вывод -

{
  "ElementList": [
    {
      "Attr1": "foo1",
      "Attr2": [
        "bar1",
        "bar2"
      ]
    },
    {
      "Attr1": "foo2",
      "Attr2": [
        "bar3",
        "bar4"
      ],

      ...

        {
      "Attr1": "fooN",
      "Attr2": [
        "barX",
        "barY"
      ]  

    }
  ]
}

В основном

  • Массив1 переименован в ElementList
  • каждое поле 1 в массиве 1 переименовано в Attr1
  • каждое поле Field2 Array1 переименовано в Attr2

Для простого переименования я могу использовать оператор shift, но я не могу указать правильное преобразование толчка для массивов. Есть идеи?

1 Ответ

0 голосов
/ 29 октября 2019

Если это вас устраивает:

[
  {
    "operation": "shift",
    "spec": {
      "Array1": "ElementList"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "ElementList": {
        "*": {
          "field1": "ElementList[&1].Attr1",
          "field2": "ElementList[&1].Attr2"
        }
      }
    }
  }
]
...