Apache NiFi 中的 Json 字段匹配

标签 json regex apache-nifi

我有一个 json 作为来自 InvokeHTTP 的响应,如下所示:

{
   "id": "1234567890",
   "status": "completed",
   "others": "abc",
   "field": "1"
}

我想使用一个处理器(也许是 RouteOnAttribute??)来检查响应的状态是否完成,如果不匹配,它会返回到 invokeHttp 再次检查状态。

我尝试过这个事情: EvaluateJsonPath(从json中提取id) -> InvokeHTTP(获取状态) -> RouteOnAttribute(检查状态是否完成)

  • -> 匹配进入漏斗
  • -> 不匹配再次转到 EvaluateJsonPath(以创建循环)

对于 InvokeHTTP,我需要原始 json 文件,因为我必须获取请求 id。

我使用了具有以下属性的路由到属性名称:status - ${status:equals('completed')}

不幸的是,即使状态已完成,我总是收到不匹配的消息。

问题出在哪里?

最佳答案

我已经构建了虚拟流程,以检查您的情况,没有看到任何问题。流程如下:enter image description here 要点如下:

  1. 在顶部 EvaluateJsonPath 我使用 flowfile-attribute 作为目标并添加新属性 - status enter image description here
  2. 在 RouteOnAttribute 中,我检查状态值 enter image description here
  3. 在底部的 EvaluateJsonPath 中,我提取 id,并使用 flowfile-content enter image description here 作为目标。

关于Apache NiFi 中的 Json 字段匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68458097/

相关文章:

javascript - JS 正则表达式替换文件名中的版本号

tcp - NiFi 转发/复制 TCP 流

java - NIFI 执行流命令 : execute Java code on windows

java - 如何从嵌套的ArrayList中获取JSONObject的属性并将其显示给ListView?

java - gson 未终止的字符串错误

java - 字符串上的正则表达式replaceAll

amazon-redshift - 使用 Apache Nifi 将数据从 vertica 传输到 Redshift

arrays - 如何提取字典键中的键

javascript - 在 NodeJS 中将 K,V 对分配给 JSON 对象

regex - 使用正则表达式匹配对标签