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

如何在modify-overwrite-beta操作中用=toString转换嵌套对象值为字符串

问题:Jolt实现多层嵌套对象中所有value值转字符串

需要处理包含上千个键的多层嵌套JSON对象,要求将所有层级(外层及各嵌套对象内)的value字段值转换为字符串。此前尝试使用modify-overwrite-beta操作,指定单个value字段用=toString,同时用*匹配所有键,但会将整个嵌套对象转为字符串,破坏原有结构,现需解决深层嵌套场景的转换问题。

输入示例

{
  "value": 3,
  "primary": {
    "value": 3
  },
  "quality": {
    "value": 3
  }
}

期望输出

{
  "value" : "3",
  "primary" : {
    "value" : "3"
  },
  "quality" : {
    "value" : "3"
  }
}

尝试的Jolt规则

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "primary": {
        "value": "=toString"
      },
      "*": "=toString"
    }
  }
]

当前错误输出

{
  "value" : "3",
  "primary" : "{value=3}",
  "quality" : "{value=3}"
}

更新后的深层嵌套输入示例

{
  "value": 3,
  "primary": {
    "value": {
      "a": {
        "value": 3
      }
    }
  },
  "quality": {
    "value": 3
  }
}

解决方案

使用Jolt的递归匹配语法,针对所有层级的value字段单独处理,避免将整个对象转为字符串。正确的Jolt规则如下:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        // 递归处理所有嵌套对象
        "*": "&1",
        // 匹配当前层级的value字段,转为字符串
        "value": "=toString"
      },
      // 处理外层的value字段
      "value": "=toString"
    }
  }
]

规则说明

  • *: 匹配当前层级的所有键
  • "*": "&1": 对当前层级下的所有嵌套对象,递归应用当前的spec规则,实现深层遍历
  • "value": "=toString": 对每一层级的value字段单独执行转字符串操作,不会影响其所在的嵌套对象结构

这个规则可以处理任意深度的嵌套对象,确保所有层级的value值都转为字符串,同时保留原有的JSON结构。

内容的提问来源于stack exchange,提问作者Arnold Joseph

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:05:10