JOLT 转换 - 提取字段并将其置于顶层

问题描述

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