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

如何在Jolt中定义=removeRecursive移除所有familyName字段

你当前写的配置无法移除所有位置的familyName字段,问题出在两个地方:

  • 根节点下的"*"通配符仅能匹配最外层的第一层属性,不会向下遍历多层嵌套的子节点
  • 直接给第一层通配符绑定removeRecursive函数时,函数的递归作用范围仅限当前匹配节点的下属子属性,根节点本身如果存在familyName字段会被遗漏,同时深层嵌套节点的匹配逻辑也会受Jolt默认遍历深度限制失效。
正确配置方案

方案1:使用remove操作(推荐,兼容性最好)

该写法可以稳定覆盖根节点、任意深度嵌套对象、数组对象内的所有familyName字段,不受嵌套层级限制:

{
  "operation": "remove",
  "spec": {
    "familyName": "",
    "*": {
      "**": {
        "familyName": ""
      }
    }
  }
}

方案2:使用removeRecursive函数

如果要沿用modify-overwrite-beta操作+removeRecursive的写法,需要替换为递归全节点通配符~**,保证遍历范围覆盖所有层级:

{
  "operation": "modify-overwrite-beta",
  "spec": {
    "~**": "=removeRecursive('familyName')"
  }
}
效果验证

测试输入:

{
  "familyName": "根级字段",
  "info": {
    "familyName": "二级嵌套字段",
    "extend": {
      "familyName": "三级嵌套字段",
      "createTime": "2024-01-01"
    }
  },
  "userList": [
    {
      "familyName": "数组内字段",
      "userId": 1001
    }
  ]
}

转换输出(所有familyName字段被完全移除):

{
  "info": {
    "extend": {
      "createTime": "2024-01-01"
    }
  },
  "userList": [
    {
      "userId": 1001
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:51:18