适配单元素/多元素数组的Dynamic Jolt转换方案求助
Jolt数组适配解决方案
问题核心
原有Jolt规格仅适配单元素数组(此时Jolt会自动将数组转为对象处理),但多元素数组时因未做遍历处理导致失效,需补充数组元素遍历逻辑,同时实现以下空值判断:
- 当
product_Thumbnail为空时,ColorwaySeasonImage设为空 - 当
color_Thumbnail为空时,ColorWayImage设为空
正确Jolt规格
[ { "operation": "shift", "spec": { "product": { "*": { // 遍历product数组的每个元素 "product_Thumbnail": { "": { // 匹配空值分支 "@(2,)": { "ColorwaySeasonImage": "" } }, "*": { // 匹配非空值分支 "@(2,)": { "ColorwaySeasonImage": "@(2,product_Thumbnail)" } } }, "color_Thumbnail": { "": { "@(2,)": { "ColorWayImage": "" } }, "*": { "@(2,)": { "ColorWayImage": "@(2,color_Thumbnail)" } } }, // 按需添加其他字段映射,示例格式如下 "product_Name": "[&1].productName", "color_Name": "[&1].colorName" } } } } ]
关键说明
- 用
product.*遍历数组内的每个元素,&1代表当前数组元素的索引,确保多元素时每个元素被独立处理 - 对
product_Thumbnail和color_Thumbnail分别做空值("")和非空值("*")的分支判断,精准实现对应字段的赋值逻辑 - 其他字段映射需遵循
"原字段名": "[&1].目标字段名"格式,保证每个数组元素的字段都正确关联
输入输出示例
多元素输入示例
{ "product": [ { "product_Name": "Product A", "product_Thumbnail": "", "color_Name": "Red", "color_Thumbnail": "red.jpg" }, { "product_Name": "Product B", "product_Thumbnail": "b_season.jpg", "color_Name": "Blue", "color_Thumbnail": "" } ] }
预期输出示例
[ { "productName": "Product A", "ColorwaySeasonImage": "", "colorName": "Red", "ColorWayImage": "red.jpg" }, { "productName": "Product B", "ColorwaySeasonImage": "b_season.jpg", "colorName": "Blue", "ColorWayImage": "" } ]
内容的提问来源于stack exchange,提问作者Thiyagaraj Narayanan
相关产品推荐
相关产品推荐

