使用JOLT转换JSON结构:展开original并将enrichment转为数组
JOLT转换方案
针对需求:将original字段的属性展开至顶层,同时将enrichment字段统一转换为数组(兼容单个对象或已有数组的情况),对应的JOLT转换规格如下:
[ // 展开original字段到顶层,保留enrichment原始结构 { "operation": "shift", "spec": { "*": { "original": { "*": "&2.&" }, "enrichment": "&2.enrichment" } } }, // 将enrichment统一转换为数组 { "operation": "modify-default-beta", "spec": { "*": { "enrichment": "=toArray" } } } ]
操作说明
shift操作:
- 遍历输入数组中的每个元素(
*匹配数组索引) - 将
original下的所有属性(*匹配属性名)映射到顶层节点,&2.&表示向上回溯两层的节点(即数组元素本身),并使用当前属性名作为键 - 直接保留
enrichment字段到顶层,保持其原始结构
- 遍历输入数组中的每个元素(
modify-default-beta操作:
- 使用JOLT内置的
=toArray函数处理enrichment字段:- 若
enrichment原本是单个对象,会自动包装为包含该对象的数组 - 若
enrichment原本已是数组,则保持数组结构不变,不会额外嵌套
- 若
- 使用JOLT内置的
测试示例
- 当输入为单个
enrichment对象时,转换后得到目标结构; - 当输入的
enrichment为数组时,转换后直接保留原数组内容,无需额外处理。
内容的提问来源于stack exchange,提问作者JassyJov
相关产品推荐
相关产品推荐

