如何编写JOLT规则:依据parent_id键将对象分配至不同数组
JOLT 分组实现方案
以下是满足需求的JOLT转换规范,通过shift和cardinality两个操作完成分组:
[ { "operation": "shift", "spec": { "data": { "*": { "parent_id": { "@(2)": "found[]" }, "*": { "@(2)": "notfound[]" } } } } }, { "operation": "cardinality", "spec": { "found": "ONE", "notfound": "ONE" } } ]
逻辑说明
- shift 操作:
- 遍历
data数组的每个元素("*"匹配数组索引) - 若元素包含
parent_id键,通过@(2)获取整个元素对象,将其存入found[]数组 - 对元素的所有键(
"*")执行匹配,将整个元素存入notfound[]数组
- 遍历
- cardinality 操作:
- 由于含
parent_id的元素会同时匹配上述两个规则,该操作通过ONE约束,确保每个元素仅保留在一个数组中(优先保留在found数组)
- 由于含
验证结果
输入你提供的JSON数据后,将输出符合预期的分组结构:
{ "notfound": [ { "ID1": "ID1", "ID2": "123" } ], "found": [ { "parent_id": "xyz", "ID1": "ID1", "ID2": "123" } ] }
内容的提问来源于stack exchange,提问作者Grant
相关产品推荐
相关产品推荐

