JOLT 转换 - 提取字段并将其放入顶层

JOLT Transformation - Extract field and put it to the top level

我有一个 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"
}

有人知道如何解决这个问题吗?

您可以使用 shift 操作和基于索引的键,如下所示

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