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

Apache NiFi:如何从属性存储的JSON响应中提取认证令牌?

Apache NiFi 提取属性中JSON字段的解决方案

针对你遇到的问题,这里提供几个可行的解决思路:

方法1:使用ExecuteScript处理器解析属性中的JSON

ExecuteScript支持直接操作流文件属性,能轻松解析属性内的JSON内容并提取目标字段。以Groovy脚本为例:

  1. 添加ExecuteScript处理器,选择Groovy作为脚本语言
  2. 替换默认脚本为以下代码:
import groovy.json.JsonSlurper

def flowFile = session.get()
if (!flowFile) return

def tokenResponse = flowFile.getAttribute("TokenResponse")
if (tokenResponse) {
    def json = new JsonSlurper().parseText(tokenResponse)
    flowFile = session.putAttribute(flowFile, "userId", json.data.userId)
    flowFile = session.putAttribute(flowFile, "authToken", json.data.authToken)
}

session.transfer(flowFile, REL_SUCCESS)
  1. 配置完成后,处理器会从TokenResponse属性中解析出userId和authToken,并保存为新的流文件属性,后续第二个InvokeHTTP直接使用${userId}和${authToken}即可。

方法2:将属性内容转存为流文件内容后用EvaluateJSONPath处理

如果更习惯用EvaluateJSONPath,可以先把属性里的JSON转成流文件内容:

  • 添加ReplaceText处理器,设置Replacement Value为 ${TokenResponse},Replacement Strategy选择Replace Entire Text,这样流文件内容就变成了TokenResponse属性的JSON字符串
  • 添加EvaluateJSONPath处理器,设置Destination为flowfile-attribute,然后添加两个属性:
    • userId:$.data.userId
    • authToken:$.data.authToken
  • 处理完成后,流文件就会带上提取出的userId和authToken属性,可直接用于后续InvokeHTTP请求。

注意:如果原始流文件内容需要保留,可以先把原始内容存到临时属性,处理完再替换回来。

方法3:使用JoltTransformJSON处理器(进阶)

如果需要更复杂的JSON转换,也可以用JoltTransformJSON:

  1. 先通过ReplaceText把TokenResponse属性转成流文件内容
  2. 添加JoltTransformJSON处理器,设置Jolt Specification为:
{
  "operation": "shift",
  "spec": {
    "data": {
      "userId": "userId",
      "authToken": "authToken"
    }
  }
}
  1. 再用EvaluateJSONPath把转换后的JSON字段提取为属性,或者直接在后续处理器中引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:45:57