【发布时间】: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