Jolt转换返回null,请求修正规则实现指定JSON格式转换
Jolt转换问题解决
问题描述
输入JSON:
{"employer": [{"id": "98","place_id": "7871","name": "Iti-ha-cho"}]}
预期输出JSON:
{"id" : "98","place_id" : "7871","name" : "Iti-ha-cho"}
原Jolt Spec未生效,返回null:
{"operation": "shift","spec": {"employer": {"id": "[&1].&","place_id": "place_id","name": "name"}}}
问题原因
原Spec错误在于没正确处理employer的数组层级。employer是数组类型,直接在其下指定字段无法匹配到数组内的对象属性,导致无数据映射,返回null。
正确的Jolt Spec
方案1:针对数组单个元素(推荐,匹配预期输出)
如果确定employer数组只有一个元素,直接定位数组第一个元素,将其下所有字段映射到顶层:
[ { "operation": "shift", "spec": { "employer": { "[0]": { "*": "&" } } } } ]
方案2:遍历数组所有元素(多元素场景适用)
若employer数组可能包含多个元素,可遍历所有元素生成对应结构(输出为数组):
[ { "operation": "shift", "spec": { "employer": { "*": { "*": "[&1].&" } } } } ]
验证说明
使用方案1的Spec转换后,会直接提取employer数组第一个元素的所有字段,生成符合预期的顶层对象。
内容的提问来源于stack exchange,提问作者dash
相关产品推荐
相关产品推荐

