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

如何在Apache NiFi中用Jolt Transform实现指定JSON过滤需求?

Jolt Transform实现按动态指定username移除用户对象

需求说明

输入JSON包含users数组和communities数组,需根据动态传入的username值,移除users数组中对应该用户名的对象,其余内容(包括communities数组)完全保留。

输入示例

{
  "users": [
    {
      "username": "user1",
      "email": "user1@example.com"
    },
    {
      "username": "user2",
      "email": "user2@example.com"
    },
    {
      "username": "user3",
      "email": "user3@example.com"
    }
  ],
  "communities": [
    {
      "id": "comm1",
      "name": "Community A"
    },
    {
      "id": "comm2",
      "name": "Community B"
    }
  ]
}

Jolt Transform 规范

假设动态传入的目标用户名用变量${targetUsername}表示,对应的Jolt转换规则如下:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "users": "=filter(@, !(\"${targetUsername}\" == @.username))"
    }
  }
]

规则解释

  • modify-overwrite-beta:用于修改现有字段的值,这里针对users数组做处理
  • =filter内置函数:对数组元素进行过滤,仅保留符合条件的元素
  • 过滤条件!(\"${targetUsername}\" == @.username):
    • @代表当前遍历到的users数组元素
    • @.username取当前元素的username属性
    • 整个条件表示:保留所有用户名不等于目标用户名的元素,也就是移除匹配的用户对象

测试效果

  • 当${targetUsername}设为user1时,输出会移除user1的对象,其余内容不变:
{
  "users": [
    {
      "username": "user2",
      "email": "user2@example.com"
    },
    {
      "username": "user3",
      "email": "user3@example.com"
    }
  ],
  "communities": [
    {
      "id": "comm1",
      "name": "Community A"
    },
    {
      "id": "comm2",
      "name": "Community B"
    }
  ]
}
  • 如果目标用户名不存在(比如设为user4),users数组会保持原样,不会有任何修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:49:57