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

JOLT转换求助:替换日期字段的/为-失败,modify-overwrite-beta失效

问题解决:Jolt转换中replace逻辑失效及结构调整修正

问题分析

你的Jolt Spec存在两个核心问题:

  1. Shift阶段冗余字段残留:"*": "certificates[&3].&"会把mapping里的date字段也复制到certificates对象下,导致最终结果多出date字段,同时后续单独映射date到validity的逻辑被提前的通配符覆盖,影响后续修改操作。
  2. Modify阶段未处理null值:当validity为null时,replace函数无法正常执行,导致转换失败或结果不符合预期。

修正后的Jolt Spec

[
  {
    "operation": "shift",
    "spec": {
      "certificates": {
        "*": {
          "name": "certificates[&1].name",
          "description": "certificates[&1].description",
          "mapping": {
            "*": {
              // 映射mapping中除date外的所有字段到certificates对象
              "code": "certificates[&3].code",
              "rating": "certificates[&3].rating",
              "scope": "certificates[&3].scope",
              // 将date重命名为validity
              "date": "certificates[&3].validity"
            }
          }
        }
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "code": "ABC1"
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "certificates": {
        "*": {
          // 仅当validity不为null时执行替换,否则保留null
          "validity": ["=notNull", "=replace(@(1,validity), '/', '-')"]
        }
      }
    }
  }
]

关键修正点说明

  1. Shift操作优化:

    • 移除通配符*的全局映射,改为明确指定mapping内需要保留的字段(code/rating/scope),避免冗余字段生成。
    • 单独将date映射为validity,确保字段重命名逻辑生效。
  2. Modify操作修复:

    • 使用["=notNull", "=replace(...)"]的条件逻辑,先判断validity是否为非空值,仅在非空时执行replace替换/为-,空值则直接保留null。
  3. 顶层code字段:

    • 保留default操作设置顶层code为ABC1,符合需求。

测试结果

将修正后的Spec应用于输入JSON,可得到你期望的输出结果:

{
  "certificates": [
    {
      "name": "name1",
      "description": "description1",
      "validity": "DEC-2023",
      "code": "ABC1",
      "rating": null,
      "scope": [
        "scope1",
        "scope2",
        "scope3"
      ]
    },
    {
      "name": "name2",
      "description": "description2",
      "validity": null,
      "code": "ABC1",
      "rating": null,
      "scope": [
        "TBD"
      ]
    }
  ],
  "code": "ABC1"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 03:12:39