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

如何用Jolt将含对象与数组的JSON转为带索引属性的纯对象?

Jolt转换:将混合Object/Array的JSON转为纯Object(数组元素带索引后缀)

示例输入

{
  "name": "Alice",
  "age": 30,
  "hobbies": ["reading", "hiking", "coding"],
  "contact": {
    "email": "alice@example.com",
    "phones": ["123456", "789012"]
  }
}

问题说明

你当前的Jolt规则未递归处理数组结构,导致输出仍保留原数组,无法将数组元素转为键名_索引格式的属性。

正确Jolt转换规则

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "[]": {
          "$": "&2_&1"
        },
        "*": {
          "[]": {
            "$": "&3_&2_&1"
          },
          "*": "&3_&2"
        },
        "*": "&2_&1"
      },
      "*": "&"
    }
  },
  {
    "operation": "remove",
    "spec": {
      "*": null
    }
  }
]

规则解释

  1. shift操作(核心转换)
    • 用通配符*匹配所有键,通过&n路径引用向上层级的键名:
      • 顶层数组:&2取数组的父键名(如hobbies),&1取数组索引,组合成hobbies_0格式的属性。
      • 嵌套对象里的数组:&3取最外层父键(如contact),&2取数组键名(如phones),&1取索引,组合成contact_phones_0。
      • 普通嵌套对象属性:直接拼接父键和子键(如contact_email)。
      • 顶层普通属性(如name、age)直接保留原键名。
  2. remove操作
    • 清理转换过程中可能生成的空值键,保证输出结构干净。

期望输出结果

{
  "name": "Alice",
  "age": 30,
  "hobbies_0": "reading",
  "hobbies_1": "hiking",
  "hobbies_2": "coding",
  "contact_email": "alice@example.com",
  "contact_phones_0": "123456",
  "contact_phones_1": "789012"
}

内容的提问来源于stack exchange,提问作者박상수

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:04:49