0
votes

I want to do JSON to JSON Transformation by using JOLT Spec. I have the input which is the Flattern JSOn and i want to covert it into Nested JSOn. I have written the JOLT Spec for this and it mentioned below. But it does not give me the desired output as expected.

This is my input 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"
  } ]
}

Desired Output

{
  "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 spec i am using following

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

But the desired output i am not getting. Please can anyone help me out on this?

Thanks in advance....

1
How do you expect the spec you've written to "know" to create labels like "OrderInfo" and "OrderHeader" unless those labels appear in the JOLT spec? Suggest you do some experimenting on your own with an online JOLT tool to figure out some of the basic concepts. See: jolt-demo.appspot.com/#inception - GGAnderson

1 Answers

0
votes

Below spec works,

For OrderHeader shift all the nodes to the OrderHeader and then remove OrderDetails from its result.

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