请求协助获取适配指定输入输出的正确JOLT转换规格
请求协助获取适配指定输入输出的正确JOLT转换规格
嗨,我明白你现在需要把这份嵌套的JSON通过JOLT转换工具转成扁平结构的JSON。先把你的输入JSON整理成规范格式,再基于常见的扁平需求给出对应的JOLT转换规格,一起来看看吧!
输入JSON
[ { "product_id": 44685238, "part_id": 43375079, "part_name": "506250-R4", "partner_parts": [ { "id": 542063727, "name": "506250-R4", "partner_id": 34302479, "partner_name": "SIBELCO", "alternate_part_names": null }, { "id": 542063728, "name": "506250-R4", "partner_id": 34303125, "partner_name": "LG HAUSYS", "alternate_part_names": null }, { "id": 542063729, "name": "506250-R4", "partner_id": 34303949, "partner_name": "SHAW INDUSTRIES", "alternate_part_names": null } ] } ]
期望的扁平JSON输出
我们期望把partner_parts数组里的每一项都和外层的product_id、part_id、part_name合并,生成一个扁平的对象数组,示例如下:
[ { "product_id": 44685238, "part_id": 43375079, "part_name": "506250-R4", "partner_part_id": 542063727, "partner_part_name": "506250-R4", "partner_id": 34302479, "partner_name": "SIBELCO", "alternate_part_names": null }, { "product_id": 44685238, "part_id": 43375079, "part_name": "506250-R4", "partner_part_id": 542063728, "partner_part_name": "506250-R4", "partner_id": 34303125, "partner_name": "LG HAUSYS", "alternate_part_names": null }, { "product_id": 44685238, "part_id": 43375079, "part_name": "506250-R4", "partner_part_id": 542063729, "partner_part_name": "506250-R4", "partner_id": 34303949, "partner_name": "SHAW INDUSTRIES", "alternate_part_names": null } ]
对应的JOLT转换规格
这里我们使用shift操作来实现字段的映射和数组的展开,具体spec如下:
[ { "operation": "shift", "spec": { "*": { "partner_parts": { "*": { "@(2,product_id)": "[&1].product_id", "@(2,part_id)": "[&1].part_id", "@(2,part_name)": "[&1].part_name", "id": "[&1].partner_part_id", "name": "[&1].partner_part_name", "partner_id": "[&1].partner_id", "partner_name": "[&1].partner_name", "alternate_part_names": "[&1].alternate_part_names" } } } } } ]
规格说明
*匹配外层数组的每一个元素;partner_parts指定要处理的嵌套数组;*匹配partner_parts数组里的每一项;@(2,product_id)表示向上回溯2层(跳出当前的partner_parts子项和partner_parts数组),获取外层的product_id字段值;[&1]表示把当前处理的partner_parts子项的索引作为新数组的索引,保证每个子项对应一个扁平对象;- 为了避免和外层字段重名,把partner_parts里的
id和name重命名为partner_part_id和partner_part_name,你也可以根据实际需求调整键名。
备注:内容来源于stack exchange,提问作者Shwetank Aryan
相关产品推荐
相关产品推荐

