求可实现嵌套JSON扁平化的正确Jolt Spec(修复单元素生效问题)
Jolt嵌套JSON扁平化转换解决方案
输入JSON
{"values":[{"reference_id":"TEST_51_ST","idoc_number":"0000000113916030","sto_number":"","sending_location":"0000000625","receiving_location":"4955","idoc_status":"51","create_time":"07:19:34","create_date":"2023-07-20","values1":[{"material_number":"A17265420","status":"E","message_class":"06","message_num":"215","message_text":"Please enter net price"},{"material_number":"","status":"E","message_class":"BAPI","message_num":"001","message_text":"No instance of object type PurchaseOrder has been created. External reference:"}]},{"reference_id":"TEST_51_ST123","idoc_number":"0000000113916030312","sto_number":"","sending_location":"00000006253","receiving_location":"49553","idoc_status":"513","create_time":"07:19:34","create_date":"2023-07-20","values1":[{"material_number":"A172654203","status":"E","message_class":"06","message_num":"2153","message_text":"Please enter net price"},{"material_number":"","status":"E","message_class":"BAPI","message_num":"0031","message_text":"No instance of object type PurchaseOrder has been created. External reference:"}]}]}
期望输出
[{"reference_id":"TEST_51_ST","idoc_number":"0000000113916030","sto_number":"","sending_location":"0000000625","receiving_location":"4955","idoc_status":"51","create_time":"07:19:34","create_date":"2023-07-20","material_number":"A17265420","status":"E","message_class":"06","message_num":"215","message_text":"Please enter net price"},{"reference_id":"TEST_51_ST","idoc_number":"0000000113916030","sto_number":"","sending_location":"0000000625","receiving_location":"4955","idoc_status":"51","create_time":"07:19:34","create_date":"2023-07-20","material_number":"","status":"E","message_class":"BAPI","message_num":"001","message_text":"No instance of object type PurchaseOrder has been created. External reference:"},{"reference_id":"TEST_51_ST123","idoc_number":"0000000113916030312","sto_number":"","sending_location":"00000006253","receiving_location":"49553","idoc_status":"513","create_time":"07:19:34","create_date":"2023-07-20","material_number":"A172654203","status":"E","message_class":"06","message_num":"2153","message_text":"Please enter net price"},{"reference_id":"TEST_51_ST123","idoc_number":"0000000113916030312","sto_number":"","sending_location":"00000006253","receiving_location":"49553","idoc_status":"513","create_time":"07:19:34","create_date":"2023-07-20","material_number":"","status":"E","message_class":"BAPI","message_num":"0031","message_text":"No instance of object type PurchaseOrder has been created. External reference:"}]
问题说明
之前尝试的Jolt Spec仅能处理单个数组元素,无法正确生成多元素场景下的扁平列表,原Spec如下:
[{"operation":"shift","spec":{"values":{"*":{"values1":{"*":{"@(2,reference_id)":["&1"].reference_id","@(2,idoc_number)":["&1"].idoc_number","@(2,sto_number)":["&1"].sto_number","@(2,sending_location)":["&1"].sending_location","@(2,receiving_location)":["&1"].receiving_location","@(2,idoc_status)":["&1"].idoc_status","@(2,create_time)":["&1"].create_time","@(2,create_date)":["&1"].create_date","material_number":["&1"].material_number","status":["&1"].status","message_class":["&1"].message_class","message_num":["&1"].message_num","message_text":["&1"].message_text}}}}}}]
正确的Jolt Spec
[ { "operation": "shift", "spec": { "values": { "*": { "values1": { "*": { "@(3,reference_id)": "[&2].reference_id", "@(3,idoc_number)": "[&2].idoc_number", "@(3,sto_number)": "[&2].sto_number", "@(3,sending_location)": "[&2].sending_location", "@(3,receiving_location)": "[&2].receiving_location", "@(3,idoc_status)": "[&2].idoc_status", "@(3,create_time)": "[&2].create_time", "@(3,create_date)": "[&2].create_date", "material_number": "[&2].material_number", "status": "[&2].status", "message_class": "[&2].message_class", "message_num": "[&2].message_num", "message_text": "[&2].message_text" } } } } } }, { "operation": "shift", "spec": { "*": "[]" } } ]
关键说明
@(3,field):向上三层引用父级values数组元素中的对应字段,确保每个values1元素都能关联到正确的父级数据[&2]:生成唯一的条目键,其中&2表示结合values数组的索引和values1数组的索引,避免条目冲突- 第二个
shift操作:将分组的对象展开为一个无嵌套的扁平数组,完全匹配期望输出格式
内容的提问来源于stack exchange,提问作者jitendra rawat
相关产品推荐
相关产品推荐

