【问题标题】:Not able to extract Json Data in Apache-NiFi无法在 Apache-NiFi 中提取 Json 数据
【发布时间】:2019-11-08 15:36:40
【问题描述】:

我写了一个下面的 POST 命令并使用“HandleHttpRequest”处理器在 Apache NiFi 中接收 POST 请求

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"employeeDetails":{"empid":"124","empname": "praveen"}}' http://localhost:7002

我能够在“handleHttpRequest”处理器中接收 json 数据,如下所示

当我检查列表队列时,我可以看到 json 数据

HandleHttpProcessor 详细信息

但是我想提取 empid 并检查我的 json 数据的 empid 是否为空,我试过了 "ExtractText","ReplaceText","UpdateAttribute","EvaluateJsonPath" 等处理器 strong> 获取员工详细信息,但我无法做到。

EvaluateJson 路径详细信息

我在 EvaluateJsonPath 处理器中收到“流文件没有有效的 JSON 内容”错误

如何提取 empdata 并检查其是否为空?

【问题讨论】:

  • 能否发布您的 EvaluateJsonPath 配置?
  • 我试过 "EvaluateJsonPath" ,但它主要用于我们从某个位置拉一个 json 文件的时候,对吧?在此之前我正在尝试 splitjson 处理器,我收到了无效的 json 格式错误。但我的目标是从 Post Request 中提取 json 数据(json 数据已经在队列中可用)。
  • 为了调试我的 Json,我将我的“测试文件”保存在带有 PutFile 处理器的存储库中。尤其是Json,我用this tool来帮助我!
  • 我使用 Postman 而不是 CURL 命令,我能够检索到必填字段

标签: apache-nifi


【解决方案1】:

该问题与 NiFi 无关。您应该像这样使用 CURL 发布数据(在 -d 之后将双引号 " 更改为单引号 '):

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"employeeDetails":{"empid":"124","empname": "praveen"}}' http://localhost:7002

【讨论】:

  • 感谢您的评论..但我仍然收到“没有有效的 json 内容”错误..即使我的 json 内容有效..添加了问题的详细信息
  • 哦,您的json问题与双引号有关,您收到的数据不是有效的json,应该是这样的:{"employeeDetails":{"empid":"124","empname": "praveen"}}
  • 我使用了相同的 curl 命令,在列表队列中,我的 json 附加了单引号 ('),如下所示 '{employeeDetails:{empid:124,empname:praveen}}' 因此我再次我在 NiFi 中得到“not a valid json”内容
  • 我使用 Postman 而不是 CURL 命令,我能够检索到必填字段。
【解决方案2】:

我有与你完全相同的两个处理器,此外,我还添加了一个 HandleHTTPResponse,这样我的 curl 命令就可以顺利退出,而不会发送额外的缓冲区消息,这些消息会使 EvaluateJSONPath 组件因无效 JSON 错误而失败(我的猜测是这可能有你的情况也是如此)。 HTTP Request Flow

正如@Behrouz Seyedi 提到的,您需要在命令中使用单引号。这是我的 curl 命令

curl -v -H "Content-type: application/json" -X POST -d '{"employeeDetails":{"empid":"124","empname": "praveen"}}' http://localhost:7003

这是 EvaluateJSONPath 处理器的 screenshot

这是 EvaluateJSONPath 的响应 empid

【讨论】:

  • 你能分享你的 EvaluatejsonPath 配置吗?
  • 用 EvaluatejsonPath 的配置更新了答案
猜你喜欢
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 2019-04-09
  • 2017-07-30
相关资源
最近更新 更多