You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jolt规格优化:处理含/不含数组的JSON,补全缺失元素

Jolt 转换解决方案:兼容含/不含PC13数组的JSON数据

问题说明

需实现JSON转换逻辑:

  • 若条目含PC13数组,则展平数组元素并关联父级字段
  • 若条目不含PC13数组,则直接保留父级数据
  • 需避免遗漏无PC13的条目(如parent2、parent6),同时防止父级数据重复

输入示例

[
  {"parentId": "parent1", "parentField": "val1", "PC13": [{"id": "pc1", "field": "a"}, {"id": "pc2", "field": "b"}]},
  {"parentId": "parent2", "parentField": "val2"},
  {"parentId": "parent3", "parentField": "val3", "PC13": [{"id": "pc3", "field": "c"}]},
  {"parentId": "parent4", "parentField": "val4", "PC13": [{"id": "pc4", "field": "d"}, {"id": "pc5", "field": "e"}, {"id": "pc6", "field": "f"}]},
  {"parentId": "parent5", "parentField": "val5", "PC13": [{"id": "pc7", "field": "g"}]},
  {"parentId": "parent6", "parentField": "val6"},
  {"parentId": "parent7", "parentField": "val7", "PC13": [{"id": "pc8", "field": "h"}, {"id": "pc9", "field": "i"}]},
  {"parentId": "parent8", "parentField": "val8", "PC13": [{"id": "pc10", "field": "j"}]},
  {"parentId": "parent9", "parentField": "val9"},
  {"parentId": "parent10", "parentField": "val10", "PC13": [{"id": "pc11", "field": "k"}]},
  {"parentId": "parent11", "parentField": "val11"}
]

正确Jolt转换规格

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        // 处理含PC13数组的条目:将数组元素与父字段关联
        "PC13": {
          "*": {
            "@2,parentId": "tmp.[&3].&1.parentId",
            "@2,parentField": "tmp.[&3].&1.parentField",
            "*": "tmp.[&3].&1.&"
          }
        },
        // 处理不含PC13数组的条目:将父级数据存入临时结构
        "$": {
          "@(1,PC13)": {
            "null": {
              "@(2,parentId)": "tmp.[&3].parentId",
              "@(2,parentField)": "tmp.[&3].parentField"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "tmp": {
        "*": {
          // 展开临时结构中的所有条目为一维数组
          "*": {
            "@": "[]"
          }
        }
      }
    }
  },
  {
    "operation": "remove",
    "spec": {
      "*": {
        "PC13": "" // 清理残留的PC13字段
      }
    }
  }
]

转换逻辑说明

  1. 第一个Shift操作:创建临时结构tmp,为每个原条目分配索引。含PC13的条目会在对应索引下生成多个子对象(对应数组元素+父字段);不含PC13的条目会在对应索引下生成单个父对象。
  2. 第二个Shift操作:将tmp中的所有子对象展开为一维数组,确保所有原条目(含/不含PC13)都被正确保留,最终得到11个元素的输出。
  3. Remove操作:移除转换过程中可能残留的PC13字段,保证输出结构整洁。

预期输出示例

输出将包含11个条目:

  • parent1对应2个展平后的条目
  • parent2对应1个父级条目
  • parent3对应1个展平后的条目
  • ...
  • parent6对应1个父级条目
  • ...
  • parent11对应1个父级条目

内容的提问来源于stack exchange,提问作者tabassum mahanaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:50:31