修正JOLT配置以实现预期的JSON转换结果
JOLT配置:将params数组字段提升至顶层与date平级
问题说明
从API获取的原始JSON中,每个对象包含date字段和params数组,需要把params数组内的每个条目与对应的date平级,生成一条独立的记录。之前尝试的JOLT配置导致数组嵌套,不符合预期。
原始JSON:
[ { "date":"2023-08-15", "params":[ { "id":"3877", "available":true, "tag": "podxmeil" }, { "id":"559", "available":false, "tag": "kogdaeymtim" } ] }, { "date":"2023-08-16", "params":[ { "id":"327", "available":false, "tag": "syuopernuitd" }, { "id":"916", "available":false, "tag": "tabgramidi" } ] } ]
尝试的错误JOLT配置:
[ { "operation": "shift", "spec": { "*": { "date": "[&1].date", "params": { "*": { "id": "[&1].id", "available": "[&1].available" } } } } } ]
正确JOLT配置
通过shift操作,结合层级索引引用,将date传递到每个params条目,并生成扁平数组:
[ { "operation": "shift", "spec": { "*": { "params": { "*": { "@2,date": "[&3].date", "*": "[&3].&" } } } } } ]
预期结果
执行后得到的扁平结构:
[ { "date": "2023-08-15", "id": "3877", "available": true, "tag": "podxmeil" }, { "date": "2023-08-15", "id": "559", "available": false, "tag": "kogdaeymtim" }, { "date": "2023-08-16", "id": "327", "available": false, "tag": "syuopernuitd" }, { "date": "2023-08-16", "id": "916", "available": false, "tag": "tabgramidi" } ]
配置解释
@2,date:向上回溯两层节点,获取当前params所属对象的date值[&3]:向上回溯三层节点,引用外层数组的索引,确保每个params条目生成独立的数组元素"*": "[&3].&":匹配params内所有字段,保留原字段名并映射到对应数组元素中
内容的提问来源于stack exchange,提问作者takotsubo
相关产品推荐
相关产品推荐

