Jolt转换需求:将属性值转为键后缀并生成properties数组
Jolt JSON转换实现方案
以下是实现需求的Jolt转换规范,分三步完成:
完整Jolt转换规范
[ { "operation": "shift", "spec": { "id": "id", "property.*.*": { "$": "temp.&", "@": "tempVal.&" } } }, { "operation": "shift", "spec": { "id": "id", "temp": { "*.*.*": { "$(0,1).$(0,2).@(2,tempVal.&)": "properties[#2].id" } } } }, { "operation": "remove", "spec": ["temp", "tempVal"] } ]
步骤拆解
第一步:保留原ID并暂存目标键值对
用shift操作直接保留根节点的id字段,同时把所有property.xxx.n格式的键名存入temp对象,对应的值存入tempVal对象,方便后续关联处理。第二步:生成properties数组
再次保留id字段,然后遍历temp中的每个键:- 通过
$(0,1).$(0,2)截取键的前两部分(比如从property.country_of_origin.0中拿到property.country_of_origin); - 通过
@(2,tempVal.&)获取该键对应的值(比如TW); - 把两部分拼接成新的
id值,用properties[#2]将每个结果存入数组的独立元素中。
- 通过
第三步:清理临时字段
用remove操作删除临时生成的temp和tempVal字段,只保留最终需要的结构。
验证结果
将给定的输入JSON代入上述规范,会生成你预期的输出结构,完全匹配需求。
内容的提问来源于stack exchange,提问作者Katja Bürger
相关产品推荐
相关产品推荐

