如何调整JOLT转换规则,将数组多对象合并为单个嵌套对象
JOLT转换:将data数组的多个对象合并为单个对象数组元素
问题出在你当前shift操作里的data[]写法——每次映射字段时,[]会自动创建新的数组元素,导致每个键值对都被单独封装成一个对象。要实现数组里只包含一个包含所有键值对的对象,只需要把data[]改成data[0],让所有字段都映射到数组的第一个(也是唯一)对象里。
修改后的完整JOLT规则:
[ { "operation": "shift", "spec": { "AssetID": "data[0].6.value", "AssetNumber": "data[0].7.value", "AssetMaterial": "data[0].8.value", "AssetName": "data[0].9.value", "CustRID": "data[0].10.value", "SerialNumber": "data[0].11.value", "Room": "data[0].12.value", "Datacenter": "data[0].13.value", "UMountingID": "data[0].14.value", "CabinetAssetID": "data[0].15.value", "CabinetName": "data[0].16.value" } }, { "operation": "default", "spec": { "to": "table1" } }, { "operation": "default", "spec": { "fieldsToReturn": [6, 7, 8, 9, 10, 11, 12] } } ]
转换后的输出:
{ "data": [ { "6": { "value": "1" }, "7": { "value": "2" }, "8": { "value": "Cisco MDS 9706" }, "9": { "value": "Cisco-MDS-9706_1" }, "10": { "value": "A001" }, "11": { "value": "OU812" }, "12": { "value": "ROOM5" }, "13": { "value": "DC69" }, "14": { "value": "86" }, "15": { "value": "181" }, "16": { "value": "CAB666" } } ], "to": "table1", "fieldsToReturn": [6, 7, 8, 9, 10, 11, 12] }
这个修改非常直接:通过data[0]固定数组索引,所有字段都会被合并到同一个对象中,最终data数组只会保留一个包含所有键值对的元素,完全匹配你需要的预期输出。
内容的提问来源于stack exchange,提问作者Marcus O'Connor
相关产品推荐
相关产品推荐

