使用Jolt将嵌套JSON内层labels数组与外层属性合并为扁平化数组
Jolt嵌套JSON扁平化规则调整方案
问题原因
你原有规则的核心问题是输出数组索引计算错误:处理labels子项时使用的[&1]取的是labels内部子数组的索引,导致不同外层资源下、同索引的labels子项会被写入输出数组的同一个位置,最终字段被合并为数组,不符合预期。
正确Jolt规则
[ { "operation": "shift", "spec": { "*": { "labels": { "*": { "@3": "[&(3,1)].", "*": "[&(3,1)].&" } } } } }, { "operation": "remove", "spec": { "*": { "labels": "" } } } ]
规则说明
- 索引拼接:
&(3,1)会把外层资源数组的索引(向上第3层的key)和labels子数组的索引(向上第1层的key)拼接作为输出数组的唯一索引,确保每个labels子项对应输出数组的一个独立元素,不会出现内容合并的问题 - 自动合并外层字段:
@3会直接读取当前labels子项所属的外层资源全量字段,自动合并到输出对象中,不需要硬编码外层键名,兼容任意字段扩展 - 冗余字段移除:最后一步
remove操作会删掉合并后多余的labels数组字段,得到干净的扁平化结果
内容的提问来源于stack exchange,提问作者Totally
相关产品推荐
相关产品推荐

