适配有无futureAvailability嵌套数组的Dynamic Jolt Spec实现问询
兼容有无futureAvailability数组的Jolt转换方案
现有Jolt转换规则在输入包含futureAvailability嵌套数组时可正常生成预期输出,但当输入不含该数组时转换会失败,以下是兼容两种场景的实现方案:
输入示例
输入1(含futureAvailability数组)
{ "time": "2023-02-21T14:24:34.966Z", "itemId": "G20864_270", "unitOfMeasure": "PIECE", "futureAvailability": [ { "availableQuantity": 200, "ETA": "2023-03-01T00:00:00.000Z" }, { "availableQuantity": 201, "ETA": "2023-03-01T00:00:00.000Z" } ] }
输入2(不含futureAvailability数组)
{ "time": "2023-02-22T09:13:52.168Z", "itemId": "G20824_510", "unitOfMeasure": "PIECE" }
原Jolt规则(存在兼容性问题)
[ { "operation": "shift", "spec": { "futureAvailability": { "*": { "@(2,time)": "[&1].time", "@(2,itemId)": "[&1].itemId", "@(2,unitOfMeasure)": "[&1].unitOfMeasure", "ETA": "[&1].ETA", "availableQuantity": "[&1].availableQuantity" } } } } ]
兼容版Jolt规则
通过default操作给futureAvailability字段设置默认空数组,确保无论输入是否包含该字段,后续的shift操作都能正常执行:
[ { "operation": "default", "spec": { "futureAvailability": [] } }, { "operation": "shift", "spec": { "futureAvailability": { "*": { "@(2,time)": "[&1].time", "@(2,itemId)": "[&1].itemId", "@(2,unitOfMeasure)": "[&1].unitOfMeasure", "ETA": "[&1].ETA", "availableQuantity": "[&1].availableQuantity" } } } } ]
验证结果
输入1的输出(与预期一致)
[ { "time": "2023-02-21T14:24:34.966Z", "itemId": "G20864_270", "unitOfMeasure": "PIECE", "ETA": "2023-03-01T00:00:00.000Z", "availableQuantity": 200 }, { "time": "2023-02-21T14:24:34.966Z", "itemId": "G20864_270", "unitOfMeasure": "PIECE", "ETA": "2023-03-01T00:00:00.000Z", "availableQuantity": 201 } ]
输入2的输出(转换正常,输出空数组)
[]
内容的提问来源于stack exchange,提问作者Thiyagaraj Narayanan
相关产品推荐
相关产品推荐

