JOLT转换:如何保留指定JSON属性并移除大量冗余字段?
JOLT转换:保留指定根属性与数组内字段的正确方案
问题场景
需要处理含大量随机冗余字段的JSON,仅保留:
- 根层级的
root_element属性 - 数组
array_elements中每个元素的array_field字段
错误原因分析
之前的转换失败是因为数组字段的映射路径错误——直接将数组元素输出到根层级,而非嵌套在array_elements键下。当同时映射根属性时,JOLT会覆盖根层级的数组输出,最终只保留根属性。
正确的JOLT转换Spec
{ "operation": "shift", "spec": { "root_element": "root_element", "array_elements": { "*": { "array_field": "array_elements[&1].array_field" } } } }
转换效果
假设原始输入为:
{ "root_element": 14, "another_root_element": "冗余字段", "array_elements": [ { "array_field": 103854, "another_array_field": "冗余" }, { "array_field": 9975, "another_array_field": "冗余" }, { "array_field": 47551, "another_array_field": "冗余" } ] }
转换后输出:
{ "root_element": 14, "array_elements": [ { "array_field": 103854 }, { "array_field": 9975 }, { "array_field": 47551 } ] }
关键说明
array_elements[&1].array_field:明确指定将数组元素的array_field映射到输出的array_elements数组中,&1表示引用当前数组元素的索引,保证数组结构正确。- 该方案通过显式映射需要保留的字段,自动忽略所有未在spec中定义的冗余字段,无需使用remove操作,适配大量随机冗余字段的场景。
内容的提问来源于stack exchange,提问作者GCL
相关产品推荐
相关产品推荐

