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

如何使用Jolt将JSON数组规范化为属性键值结构?

Jolt JSON数组规范化解决方案

示例源JSON

[
  {
    "itemNo": "ITEM001",
    "name": "笔记本电脑",
    "price": 5999,
    "brand": "XX品牌"
  },
  {
    "itemNo": "ITEM002",
    "category": "办公耗材",
    "stock": 100
  }
]

期望输出JSON

[
  {
    "id": "ITEM001",
    "attribute": "itemNo",
    "value": "ITEM001"
  },
  {
    "id": "ITEM001",
    "attribute": "name",
    "value": "笔记本电脑"
  },
  {
    "id": "ITEM001",
    "attribute": "price",
    "value": 5999
  },
  {
    "id": "ITEM001",
    "attribute": "brand",
    "value": "XX品牌"
  },
  {
    "id": "ITEM002",
    "attribute": "itemNo",
    "value": "ITEM002"
  },
  {
    "id": "ITEM002",
    "attribute": "category",
    "value": "办公耗材"
  },
  {
    "id": "ITEM002",
    "attribute": "stock",
    "value": 100
  }
]

正确的Jolt Shift规范

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "@(2,itemNo)": "[#2].id",
          "$": "[#2].attribute",
          "@": "[#2].value"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "[]"
    }
  }
]

规范说明

  1. 第一个Shift操作:

    • 外层*遍历源数组里的每个物品对象
    • 内层*遍历当前物品的所有属性
    • @(2,itemNo):向上回溯2层拿到当前物品的itemNo值,作为新对象的id
    • $:取当前遍历的属性名,赋值给attribute字段
    • @:取当前属性的对应值,赋值给value字段
    • [#2]:用外层数组的索引做临时分组键,保证同一物品的属性对象归为一组
  2. 第二个Shift操作:

    • 把分组后的多维数组平铺成一维数组,得到最终需要的结构

内容的提问来源于stack exchange,提问作者Katja Bürger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:58:17