JOLT: нужно разделить массив и объединить с другими деталями - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь выполнить преобразование JSON с помощью JOLT. Но я застрял в точке, где я разделил массив JSON и добавил другие детали. Как видно из текущего вывода, я смог извлечь 0-е значение и добавить детали, но как я могу извлечь следующий элемент и добавить offerId.

Вход JSON

{
  "count": 100,
  "data": [
    {
      "offerDetails": {
        "offerId": "1234"
      },
      "merchantDetails": {
        "merchantName": "merchantName",
        "merchantLocations": [
          {
            "merchantAddress": "merchantAddress1"
          },
          {
            "merchantAddress": "merchantAddress2"
          }
        ]
      }
    }
  ]
}

Ниже SPE C Я пробовал

[
  {
    "operation": "shift",
    "spec": {
      "data": {
        "*": {
          "offerDetails": {
            "offerId": "offerId"
          },
          "merchantDetails": {
            "merchantLocations": {
              "0": {
                "merchantAddress": "merchant.name"
              }
            }
          }
        }
      }
    }
      }
]

Текущий выход

{
  "offerId" : "1234",
  "merchant" : {
    "name" : "merchantAddress1"
  }
}

Желаемый Выход

[{
        "offerId": "1234",
        "merchant": {
            "name": "merchantAddress1"
        }
    },
    {
        "offerId": "1234",
        "merchant": {
            "name": "merchantAddress2"
        }
    }
]

1 Ответ

0 голосов
/ 08 мая 2020

Это может помочь,

Пройдите через merchantLocations для имени продавца и сдвиньтесь назад от merchantLocations до offerId

[
  {
    "operation": "shift",
    "spec": {
      "data": {
        "*": {
          "merchantDetails": {
            "merchantLocations": {
              "*": {
                "@(3,offerDetails.offerId)": "[].offerId",
                "merchantAddress": "[&1].merchant.name"
              }
            }
          }
        }
      }
    }
  }
]
...