Apache nifi 无法在Apache NiFi中提取Json数据

Apache nifi 无法在Apache NiFi中提取Json数据,apache-nifi,Apache Nifi,我已经编写了一个POST命令,并使用“HandleHttpRequest”处理器在apachenifi中接收POST请求 curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"employeeDetails":{"empid":"124","empname": "praveen"}}' http://localhost:7002 我能够在“handleHttpRequest

我已经编写了一个POST命令,并使用“HandleHttpRequest”处理器在apachenifi中接收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是否为null,我尝试了 “ExtractText”、“ReplaceText”、“UpdateAttribute”、“EvaluateJsonPath”等处理器获取员工详细信息,但我无法执行此操作

EvaluateJson路径详细信息

我在EvaluateJsonPath处理器中遇到“flowfile没有有效的JSON内容”错误


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

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


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


我有两个与您完全相同的处理器,另外,我还添加了一个HandleHTTPResponse,这样我的curl命令可以整齐地退出,而不会发送额外的缓冲区消息,从而导致EvaluateJSONPath组件因无效JSON错误而失败(我猜这也可能是您的情况)。

正如@Behrouz-Seyedi提到的,您需要在命令中使用一个引号。这是我的卷曲命令

curl-v-H“内容类型:application/json”-X POST-d'{“employeeDetails”:{“empid”:“124”,“empname”:“praveen”}http://localhost:7003
这是EvaluateJSONPath处理器的第一步

这是EvaluateJSONPath的响应

我有与您完全相同的两个处理器,此外,我还添加了一个HandleHTTPResponse,这样我的curl命令可以整齐地退出,而不会发送额外的缓冲区消息,从而导致EvaluateJSONPath组件因无效JSON错误而失败(我猜这也可能是您的情况)。

正如@Behrouz-Seyedi提到的,您需要在命令中使用一个引号。这是我的卷曲命令

curl-v-H“内容类型:application/json”-X POST-d'{“employeeDetails”:{“empid”:“124”,“empname”:“praveen”}http://localhost:7003
这是EvaluateJSONPath处理器的第一步

这是EvaluateJSONPath的响应

请发布您的EvaluateJsonPath配置好吗?我尝试了“EvaluateJsonPath”,但它主要用于从特定位置提取json文件,对吗?在尝试splitjson处理器之前,我遇到了无效的json格式错误。。但我的目标是从Post请求中提取json数据(json数据已经在队列中可用)。为了调试我的json,我将“测试文件”保存在带有
PutFile
处理器的存储库中。特别是对于Json,我曾经帮助过我!我使用了Postman而不是CURL命令,我能够检索到所需的字段请发布EvaluateJsonPath配置好吗?我尝试了“EvaluateJsonPath”,但它主要用于从特定位置提取json文件,对吗?在尝试splitjson处理器之前,我遇到了无效的json格式错误。。但我的目标是从Post请求中提取json数据(json数据已经在队列中可用)。为了调试我的json,我将“测试文件”保存在带有
PutFile
处理器的存储库中。特别是对于Json,我曾经帮助过我!我使用了Postman而不是CURL命令,我能够检索所需字段接收您的评论..但我仍然收到“没有有效的json内容”错误..即使我的json内容有效..将详细信息添加到问题中哦,您的json问题与双引号有关,您收到的数据不是有效的json,应该是这样的:
{“employeeDetails”:{“empid”:“124”,“empname”:“praveen”}
我使用了相同的curl命令,在列表队列中,我的json附加了单引号('),如下所示“{employeeDetails:{empid:124,empname:praveen}”'因此,我在NiFiI used Postman中再次得到“not a valid json”内容,而不是CURL命令,我能够检索所需字段。感谢您的评论..但我仍然得到“not a valid json content”错误..即使我的json内容是有效的..向问题添加了详细信息哦,你的json问题与双引号有关,你收到的数据不是有效的json,应该是这样的:
{“employeeDetails”:{“empid”:“124”,“empname”:“praveen”}
我使用了你相同的curl命令,在列表队列中,我的json附加了单引号('),如下图所示,{employeeDetails:{empid:124,empname:praveen}},因此我再次在NiFiI used Postman中获得“无效json”内容,而不是CURL命令,我能够检索所需字段。您可以共享EvaluatejsonPath配置吗?使用EvaluatejsonPath的配置更新答案吗?您可以共享EvaluatejsonPath配置吗?使用EvaluatejsonPath的配置更新答案吗
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"employeeDetails":{"empid":"124","empname": "praveen"}}' http://localhost:7002