【问题标题】:Jolt Transformation required from input json输入 json 需要 Jolt 转换
【发布时间】:2020-11-03 23:28:40
【问题描述】:

我想使用 JOLT Spec 进行 JSON 到 JSON 的转换。我的输入是 Flattern JSOn,我想将其转换为嵌套 JSOn。我为此编写了 JOLT 规范,并在下面提到。 但它并没有像预期的那样给我想要的输出。

这是我的输入 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 规范

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

但我没有得到想要的输出。请问有人可以帮我解决这个问题吗?

提前谢谢....

【问题讨论】:

  • 除非这些标签出现在 JOLT 规范中,否则您如何期望您编写的规范“知道”来创建像“OrderInfo”和“OrderHeader”这样的标签?建议您使用在线 JOLT 工具自己做一些实验,以弄清楚一些基本概念。见:jolt-demo.appspot.com/#inception

标签: arrays json split flatten jolt


【解决方案1】:

低于规范的作品,

对于OrderHeader,将所有节点移至OrderHeader,然后从其结果中删除OrderDetails

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

【讨论】:

    猜你喜欢
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2021-06-07
    相关资源
    最近更新 更多