如何使用NiFi Jolt Specification重构Bets数组生成Outcomes子数组?
NiFi Jolt Specification 转换实现方案
输入JSON数据
{ "transaction_id": 53279810162, "bets": [ { "event_name": "Mawkhar Sc - Rangdajied United FC (live)", "match_start": "1660905000000", "game_name": "Handicap ? £", "outcome_name": "2 (3:0)" }, { "event_name": "University Azzurri Fc - Hellenic Athletic Club (live)", "match_start": "1660905000000", "game_name": "Handicap ? £", "outcome_name": "2 (3:0)" } ], "user_id": 1009425, "bet_type": "Multi" }
期望输出JSON数据
{ "transaction_id": 53279810162, "bets": [ { "event_name": "Mawkhar Sc - Rangdajied United FC (live)", "match_start": "1660905000000", "outcomes": [ { "outcome_name": "2 (3:0)", "game_name": "Handicap ? £" } ] }, { "event_name": "University Azzurri Fc - Hellenic Athletic Club (live)", "match_start": "1660905000000", "outcomes": [ { "outcome_name": "2 (3:0)", "game_name": "Handicap ? £" } ] } ], "user_id": 1009425, "bet_type": "Multi" }
Jolt转换规范
使用Shift转换类型,对应的规范如下:
[ { "operation": "shift", "spec": { "*": "&", "bets": { "*": { "event_name": "bets[&1].event_name", "match_start": "bets[&1].match_start", "game_name": "bets[&1].outcomes[0].game_name", "outcome_name": "bets[&1].outcomes[0].outcome_name" } } } } ]
规范说明
*": "&":保留根节点下除bets外的所有字段(如transaction_id、user_id、bet_type),直接映射到输出的同名字段。bets数组遍历:通过"*"遍历每个bets元素,&1代表当前数组元素的索引,确保每个元素对应输出中bets数组的对应位置。- 保留原有字段:将每个
bet里的event_name和match_start直接映射到输出的对应位置。 - 构建
outcomes数组:把game_name和outcome_name放入outcomes数组的第一个元素([0])中,实现嵌套数组的结构。
内容的提问来源于stack exchange,提问作者3vge
相关产品推荐
相关产品推荐

