JOLT Transformation - извлеките поле и поместите его на верхний уровень

У меня есть SAP Idoc с дополнительными пользовательскими полями в виде JSON.

{
  "E1EDL20": [
    {
      "VBELN": "1234567890",
      "VSTEL": "ZO01",
      "LGNUM": "123",
      "NTGEW": "100.660",
      "ANZPK": "00002",
      "/XYZ/XYZ1234_E1EDL20": {
        "ACTION": "POSTED",
        "CONSIGNMENT": "12345678",
        "FREIGHT_ORDER_EXTERNAL": "S123456789",
        "IN_YARD": "X",
        "IN_YARD_DATE": "20201123",
        "IN_YARD_TIME": "100923"
      },
      "E1ADRM1": [
        {
          "PARTNER_Q": "LF",
          "PARTNER_ID": "0000100000",
          "/XYZ/XYZ1234_E1ADRM1": {
            "SUPPLIER": "X"
          }
        },
        {
          "PARTNER_Q": "OSP",
          "PARTNER_ID": "ZO01",
          "/XYZ/XYZ1234_E1ADRM1": {
            "SUPPLIER": "X"
          }
        }
      ]
    }
  ]
}

Я хочу извлечь первое поле массива и поместить его на верхний уровень. Это ожидаемый результат:

{
  "deliveryInternal" : "1234567890",
  "receivingPoint" : "ZO01",
  "warehouseNumber" : "123",
  "netWeight" : "100.66",
  "numberOfPackages" : "00002",
  "type": "LF",
  "action" : "POSTED",
  "consignment" : "12345678",
  "freightOrderExternal" : "S123456789",
  "inYard" : "X",
  "inYardDate" : "00002"
}

Есть у кого-нибудь идеи, как решить проблему?


person roland    schedule 15.01.2021    source источник


Ответы (1)


Вы можете использовать shift операцию с индексными ключами, как показано ниже.

[
  {
    "operation": "shift",
    "spec": {
      "E1EDL20": {
        "0": {
          "VBELN": "deliveryInternal",
          "VSTEL": "receivingPoint",
          "/XYZ/XYZ1234_E1EDL20": {
            "ACTION": "action"
          },
          "E1ADRM1": {
            "0": {
              "PARTNER_Q": "type"
            }
          }
        }
      }
    }
  }
]
person Udith Gunaratna    schedule 19.01.2021