如何用Jolt提取JSON中href的banner_id并生成目标对象数组?
以下是针对两种banners结构的Jolt转换规范,能自动适配href为数组或单个字符串的场景,提取banners/后的数字作为banner_id并生成目标对象数组:
[ // 第一步:统一banners结构,将单个对象转为数组 { "operation": "shift", "spec": { "banners": { "*": { "@": "banners[]" }, "href": { "@2": "banners[]" } } } }, // 第二步:从href中提取banner_id { "operation": "modify-overwrite-beta", "spec": { "banners": { "*": { "banner_id": "=split('/', @(1,href))[2]" } } } }, // 第三步:整理为目标对象数组 { "operation": "shift", "spec": { "banners": { "*": { "banner_id": "[#2].banner_id" } } } } ]
各步骤说明
统一结构:
- 若
banners是数组,直接保留每个元素到新的banners数组; - 若
banners是单个对象,通过@2取整个banners对象并包装成数组,确保后续处理逻辑一致。
- 若
提取banner_id:
- 用
split('/', @(1,href))将href按/分割为数组(例如/banners/123分割后为['', 'banners', '123']); - 取索引为2的元素,即为
banners/后的数字,赋值给banner_id。
- 用
整理输出:
- 将
banners数组中每个元素的banner_id提取出来,生成最终的对象数组。
- 将
测试示例
输入1(href为数组)
{ "banners": [ { "href": "/banners/123" }, { "href": "/banners/456" } ] }
输出1
[ { "banner_id": "123" }, { "banner_id": "456" } ]
输入2(href为单个字符串)
{ "banners": { "href": "/banners/789" } }
输出2
[ { "banner_id": "789" } ]
内容的提问来源于stack exchange,提问作者Mark Avreliy
相关产品推荐
相关产品推荐

