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

如何使用Jolt替换JSON中的字符串子串

如何使用Jolt替换JSON中的字符串子串

嘿,我来帮你搞定用Jolt替换JSON字符串子串的问题!先看看你提供的输入JSON(我把截断的second_path部分补全了,方便后续演示):

{
  "value": [
    {
      "identifier": "first_path",
      "language": "",
      "product_no": "",
      "value": "MYPATH\\PATH01",
      "value_unit_key": ""
    },
    {
      "identifier": "e_class_number",
      "language": "",
      "product_no": "",
      "value": "40-02-90-01",
      "value_unit_key": ""
    },
    {
      "identifier": "erp_lastchange_at",
      "language": "",
      "product_no": "",
      "value": "17.07.2023 13:14:50",
      "value_unit_key": ""
    },
    {
      "identifier": "second_path",
      "language": "",
      "product_no": "",
      "value": "MYPATH\\PATH02",
      "value_unit_key": ""
    }
  ]
}

假设你想要把路径类字段(比如first_path、second_path)里的MYPATH\\替换成NEWBASE\\,可以用Jolt的modify-overwrite-beta转换器结合replace函数来实现。下面是对应的Jolt规范:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "value": {
        "*": {
          // 只针对first_path和second_path做替换,其他字段保留原值
          "value": "=replace(@(1,identifier), '(first_path|second_path)', replace(@(1,value), 'MYPATH\\\\', 'NEWBASE\\\\'))"
        }
      }
    }
  }
]

我来拆解下这个规范的逻辑:

  • modify-overwrite-beta是Jolt里用于修改字段值的核心操作;
  • value.*表示遍历value数组里的每一项元素;
  • 嵌套的replace函数:先判断当前项的identifier是否是目标路径字段,是的话就执行内层替换,把value里的MYPATH\\换成NEWBASE\\;不是目标字段的话,就保持原value不变。

转换后的输出JSON会是这样:

{
  "value": [
    {
      "identifier": "first_path",
      "language": "",
      "product_no": "",
      "value": "NEWBASE\\PATH01",
      "value_unit_key": ""
    },
    {
      "identifier": "e_class_number",
      "language": "",
      "product_no": "",
      "value": "40-02-90-01",
      "value_unit_key": ""
    },
    {
      "identifier": "erp_lastchange_at",
      "language": "",
      "product_no": "",
      "value": "17.07.2023 13:14:50",
      "value_unit_key": ""
    },
    {
      "identifier": "second_path",
      "language": "",
      "product_no": "",
      "value": "NEWBASE\\PATH02",
      "value_unit_key": ""
    }
  ]
}

如果你的需求是所有value字段都要替换指定子串,不管identifier是什么,那可以简化成下面的Jolt规范:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "value": {
        "*": {
          "value": "=replace(@(1,value), 'MYPATH\\\\', 'NEWBASE\\\\')"
        }
      }
    }
  }
]

⚠️ 注意:在Jolt里处理反斜杠时要写四次\\\\——因为JSON本身需要转义一次,Jolt解析时又需要再转义一次,才能正确识别成单个反斜杠进行替换。

备注:内容来源于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.04.16 12:33:15