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

如何编写Jolt转换:保留顶层字段并替换含display_value的字段

解决Jolt转换中替换含display_value字段并保留其余字段的问题

需求说明

保留所有顶层字段,若某顶层字段包含display_value子字段,则用该子字段的值替换原顶层字段,同时丢弃该字段下的其他子字段(如link);无display_value的字段保持原样。

正确Jolt转换规则

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "@": "&1",
        "display_value": "&1"
      }
    }
  }
]

规则解释

  • * 匹配所有顶层字段,无需逐个指定字段名
  • "@": "&1":先将当前顶层字段的原始值映射到与原字段名相同的键(&1代表父级节点的键,即顶层字段名)
  • "display_value": "&1":若当前顶层字段下存在display_value子字段,则用该子字段的值覆盖之前映射的内容——这一步会自动将原对象类型的字段替换为字符串值,同时丢弃其他子字段

效果验证

输入示例

{
  "promoted_by": "client1",
  "parent": "parent1",
  "cmdb_ci": {
    "display_value": "cmdb_value",
    "link": "https://blabla"
  },
  "other_plain_field": "demo_text",
  "normal_obj_field": {
    "foo": "bar"
  }
}

输出示例

{
  "promoted_by": "client1",
  "parent": "parent1",
  "cmdb_ci": "cmdb_value",
  "other_plain_field": "demo_text",
  "normal_obj_field": {
    "foo": "bar"
  }
}

原规则问题分析

你之前的规则中,两个独立的*条目会导致冲突:第二个*": "&"会把所有顶层字段的原始值重新映射,覆盖了第一个条目生成的display_value替换结果,因此无法达到预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:37:02