Требуется преобразование толчков на входе json - PullRequest
0 голосов
/ 14 июля 2020

Я хочу выполнить преобразование JSON в JSON с помощью JOLT Spe c. У меня есть вход, который является Flattern JSOn, и я хочу скрыть его во вложенном JSOn. Я написал для этого JOLT Spe c, о чем упоминается ниже. Но он не дает мне желаемого результата, как ожидалось.

Это мой вход Json

{
  "gsiOrderNumber" : "1234567890",
  "orderType" : "PULL",
  "enteredDate" : "20200513021720",
  "customerFacilityCode" : "WK",
  "customerCode" : "Y302",
  "preferredWarehouseId" : "MWLC",
  "warehouseId" : "MWLC",
  "dtCode" : "DT",
  "customerPoNumber" : "PO123",
  "customerPoType" : "POType",
  "rushFlag" : "1",
  "esoNumber" : "SZXMF00",
  "serialNumber" : "CP900324",
  "mitSect" : "39704",
  "mitAccNo" : "1023",
  "mitOrderNumber" : "36560",
  "mitRemarks" : "MIT/41 UPSGRND",
  "mitPriorityIndicator" : "Y",
  "mitBillingFacility" : "12345",
  "OrderDetail" : [ {
    "gsiOrderNumber" : "000001234567890",
    "orderLineNumber" : "225266301",
    "partNumber" : "9780312606121",
    "orderQuantity" : "4",
    "exactQuantityFlag" : "F",
    "earlyShipDate" : "20200513021720",
    "lateShipDate" : "20200513021720",
    "orderMethod" : "P",
    "deliverToDockBuilding" : "H",
    "deliverToDockArea" : "H",
    "deliverToBuilding" : "H",
    "deliverToArea" : "07D",
    "deliverToCoordinates" : "H07DBR1702",
    "deliverToDropZoneBuilding" : "HZ",
    "deliverToDropZoneArea" : "HZ",
    "jitCallNumber" : "1234",
    "kanbanNumber" : "1234",
    "startOnLineDate" : "20200513021720",
    "buildDate" : "20200513021720",
    "transactionNumber" : "1234101"
  }, {
    "gsiOrderNumber" : "000001234567890",
    "orderLineNumber" : "225266301",
    "partNumber" : "9780312606121",
    "orderQuantity" : "4",
    "exactQuantityFlag" : "F",
    "earlyShipDate" : "20200513021720",
    "lateShipDate" : "20200513021720",
    "orderMethod" : "P",
    "deliverToDockBuilding" : "H",
    "deliverToDockArea" : "H",
    "deliverToBuilding" : "H",
    "deliverToArea" : "07D",
    "deliverToCoordinates" : "H07DBR1702",
    "deliverToDropZoneBuilding" : "HZ",
    "deliverToDropZoneArea" : "HZ",
    "jitCallNumber" : "1234",
    "kanbanNumber" : "1234",
    "startOnLineDate" : "20200513021720",
    "buildDate" : "20200513021720",
    "transactionNumber" : "1234101"
  } ]
}

Желаемый результат

{
  "OrderInfo": [
    {
      "OrderHeader": {
        "gsiOrderNumber": "1234567890",
        "orderType": "PULL",
        "enteredDate": "20200513021720",
        "customerFacilityCode": "WK",
        "customerCode": "Y302",
        "preferredWarehouseId": "MWLC",
        "warehouseId": "MWLC",
        "dtCode": "DT",
        "customerPoNumber": "PO123",
        "customerPoType": "POType",
        "rushFlag": "1",
        "esoNumber": "SZXMF00",
        "serialNumber": "CP900324",
        "mitSect": "39704",
        "mitAccNo": "1023",
        "mitOrderNumber": "36560",
        "mitRemarks": "MIT/41 UPSGRND",
        "mitPriorityIndicator": "Y",
        "mitBillingFacility": "12345"
      },
      "OrderDetail": [
        {
          "gsiOrderNumber": "000001234567890",
          "orderLineNumber": "225266301",
          "partNumber": "9780312606121",
          "orderQuantity": "4",
          "exactQuantityFlag": "F",
          "earlyShipDate": "20200513021720",
          "lateShipDate": "20200513021720",
          "orderMethod": "P",
          "deliverToDockBuilding": "H",
          "deliverToDockArea": "H",
          "deliverToBuilding": "H",
          "deliverToArea": "07D",
          "deliverToCoordinates": "H07DBR1702",
          "deliverToDropZoneBuilding": "HZ",
          "deliverToDropZoneArea": "HZ",
          "jitCallNumber": "1234",
          "kanbanNumber": "1234",
          "startOnLineDate": "20200513021720",
          "buildDate": "20200513021720",
          "transactionNumber": "1234101"
        },
        {
          "gsiOrderNumber": "000001234567890",
          "orderLineNumber": "225266301",
          "partNumber": "9780312606121",
          "orderQuantity": "4",
          "exactQuantityFlag": "F",
          "earlyShipDate": "20200513021720",
          "lateShipDate": "20200513021720",
          "orderMethod": "P",
          "deliverToDockBuilding": "H",
          "deliverToDockArea": "H",
          "deliverToBuilding": "H",
          "deliverToArea": "07D",
          "deliverToCoordinates": "H07DBR1702",
          "deliverToDropZoneBuilding": "HZ",
          "deliverToDropZoneArea": "HZ",
          "jitCallNumber": "1234",
          "kanbanNumber": "1234",
          "startOnLineDate": "20200513021720",
          "buildDate": "20200513021720",
          "transactionNumber": "1234101"
        }
      ]
    }
  ]
}

JOLT spe c Я использую следующие

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "&"
      }
    }
  }
]

Но желаемого результата я не получаю. Кто-нибудь может мне помочь в этом?

Заранее спасибо ....

1 Ответ

0 голосов
/ 16 июля 2020

Ниже работает spe c,

Для OrderHeader переместите все узлы в OrderHeader, а затем удалите OrderDetails из его результата.

[
  {
    "operation": "shift",
    "spec": {
      "OrderDetail": {
        "@1": "OrderInfo[#1].OrderHeader",
        "@": "OrderInfo[#1].OrderDetail"
      }
    }
  }, {
    "operation": "remove",
    "spec": {
      "OrderInfo": {
        "*": {
          "OrderHeader": {
            "OrderDetail": ""
          }
        }
      }
    }
  }
]
...