求可转换含动态日期字段JSON的正确Jolt规格
Jolt规格转换:合并动态日期下的商品数组
需求
需要编写Jolt规格,将包含动态日期字段及对应商品数组的输入JSON,转换为所有商品项独立排列在market.DATE数组中的输出JSON。此前尝试的规格会导致部分项分组,无法得到预期结果。
输入JSON
{ "market": { "2024-04-13": [ { "code": "ABC", "name": "Name1", "date": "2024-04-13T00:00:00.000Z", "rev": 100, "sold": 1 } ], "2024-04-14": [ { "code": "DEF", "name": "Name2", "date": "2024-04-14T00:00:00.000Z", "rev": 233.32, "sold": 3 }, { "code": "EFG", "name": "DISCOUNT", "date": "2024-04-14T00:00:00.000Z", "rev": 300.05, "sold": 1 }, { "code": "MNO", "name": "GROUP", "date": "2024-04-14T00:00:00.000Z", "rev": 45.33, "sold": 3 } ], "2024-04-15": [ { "code": "POR", "name": "TEST", "date": "2024-04-15T00:00:00.000Z", "rev": 100, "sold": 1 } ] } }
预期输出JSON
{ "market": { "DATE": [ { "code": "ABC", "name": "Name1", "date": "2024-04-13T00:00:00.000Z", "rev": 100, "sold": 1 }, { "code": "DEF", "name": "Name2", "date": "2024-04-14T00:00:00.000Z", "rev": 233.32, "sold": 3 }, { "code": "EFG", "name": "DISCOUNT", "date": "2024-04-14T00:00:00.000Z", "rev": 300.05, "sold": 1 }, { "code": "MNO", "name": "GROUP", "date": "2024-04-14T00:00:00.000Z", "rev": 45.33, "sold": 3 }, { "code": "POR", "name": "TEST", "date": "2024-04-15T00:00:00.000Z", "rev": 100, "sold": 1 } ] } }
此前尝试的Jolt规格(未达预期)
[ { "operation": "shift", "spec": { "market": { "*": { "*": { "code": "market[&1].code", "name": "market[&1].name", "date": "market[&1].date", "rev": "market[&1].rev", "sold": "market[&1].sold" } } } } } ]
正确的Jolt规格
[ { "operation": "shift", "spec": { "market": { "*": { "*": { "@": "market.DATE[]" } } } } } ]
规格说明
- 用
shift操作,通过通配符*遍历market下所有动态日期字段; - 再遍历每个日期字段下的商品数组元素;
- 通过
@引用当前完整的商品对象,并用market.DATE[]将其追加到目标数组,确保所有商品项独立排列,不会出现分组问题。
内容的提问来源于stack exchange,提问作者Optimizer
相关产品推荐
相关产品推荐

