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

如何使用Jolt过滤JSON数组中的指定元素并保留特定字段?

如何使用Jolt过滤JSON数组中的指定元素并保留特定字段?

当然可以实现你的需求!我来帮你调整Jolt转换规则,精准过滤数组元素并保留你需要的字段。

你的核心需求是:

  • 过滤audit_pixels数组,只保留role值为originalShow的元素
  • 去掉元素中的id、parent_id字段,仅保留audit_pixel和role

正确的Jolt转换规则

[
  {
    "operation": "shift",
    "spec": {
      "id": "id",
      "status": "status",
      "audit_pixels": {
        "*": {
          "role": {
            "originalShow": {
              "@(1,audit_pixel)": "audit_pixels[#2].audit_pixel",
              "@": "audit_pixels[#2].role"
            }
          }
        }
      }
    }
  }
]

规则逻辑解释

我们一步一步拆解这个转换逻辑:

  1. 保留顶层字段:直接将输入的id和status映射到结果的同名字段,确保这两个字段不丢失。
  2. 遍历数组元素:用"*"遍历audit_pixels数组的每一个元素。
  3. 过滤并保留目标元素:
    • 只匹配role值为originalShow的元素,其他值(包括null)会因为没有对应的映射规则自动被过滤。
    • @(1,audit_pixel):向上一级(当前数组元素)获取audit_pixel字段的值,映射到结果数组对应位置的audit_pixel字段。
    • @:代表当前role字段的值,直接映射到结果数组对应位置的role字段。
    • [#2]:用来生成结果数组的索引,确保过滤后的元素按原顺序排列。

转换效果

用你提供的输入JSON运行这个规则后,会得到你预期的结果:

{
  "id": 313,
  "status": "blocked",
  "audit_pixels": [
    {
      "audit_pixel": "1087125871&ord={{random}}",
      "role": "originalShow"
    },
    {
      "audit_pixel": "cid1115596-posid2396249",
      "role": "originalShow"
    }
  ]
}

你原来规则的问题说明

你之前的规则逻辑绕了弯路:

  • 试图处理null值来排除元素,其实不需要,只要只匹配我们需要的originalShow即可,不符合的元素自然不会被映射到结果中。
  • 错误地保留了id字段,并且映射路径不正确,导致无法得到预期的字段结构。

备注:内容来源于stack exchange,提问作者fujidaon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 06:54:54