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

求助:如何使用Jolt替换JSON中指定Name字段的值?

Jolt字段值替换解决方案

你需要针对Name字段的不同值做精准替换,而非统一覆盖。以下是两种无需重构整个JSON的可行方案:

方案一:链式替换(简洁直接)

使用modify-overwrite-beta操作结合replace函数,依次匹配替换目标值:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "MIRecord": {
        "*": {
          "NameValue": {
            "*": {
              "Name": "=replace(@(1,Name), 'MBWHLO', 'CHANGE1')",
              "Name": "=replace(@(1,Name), 'MBITNO', 'CHANGE2')",
              "Name": "=replace(@(1,Name), 'V_NETA', 'CHANGE3')"
            }
          }
        }
      }
    }
  }
]

该规则会按顺序对每个Name字段执行替换:仅匹配到指定值时才修改,未匹配的Name会保留原内容,其他字段不受影响。

方案二:映射表替换(易于扩展)

如果后续有更多替换需求,用映射表管理更清晰,步骤如下:

  1. 定义临时映射表存储替换关系;
  2. 通过lookup函数匹配取值;
  3. 移除临时映射表,保证输出结构干净。
[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "nameMap": {
        "MBWHLO": "CHANGE1",
        "MBITNO": "CHANGE2",
        "V_NETA": "CHANGE3"
      },
      "MIRecord": {
        "*": {
          "NameValue": {
            "*": {
              "Name": "=lookup(@(3,nameMap), @(1,Name), @(1,Name))"
            }
          }
        }
      }
    }
  },
  {
    "operation": "remove",
    "spec": {
      "nameMap": ""
    }
  }
]

关键说明:

  • lookup函数参数:@(3,nameMap)指向根节点下的映射表,@(1,Name)是当前要替换的字段值,最后一个@(1,Name)是默认值(未匹配时保留原内容);
  • remove操作仅清理临时创建的nameMap,不会改动原始JSON的其他结构。

原规则问题分析

你之前的规则直接对所有Name字段统一赋值为CHANGE1,未做条件判断,因此会覆盖所有Name值。上述方案均基于原字段值做精准匹配,无需重构整个JSON,完全适配动态输入场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:26:06