基于json字段来控制整个Json内容

Stu*_*art 2 json apache-nifi

我有以下JSON:

{
    "From": "stuart",
    "Payload": {
        "Alert": "Critical",
        "Recipient": "Joe"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想根据Alert中的字段是否为"严重"来进行路由.

我已经尝试过RouteOnAttribute处理器和EvaluateJson处理器.两者都没有工作.

对于RouteOnAttribute,我试过了

提醒: ${Payload:jsonPath('$.Alert'):equals('Critical')}

然后我有一个基于Alerted的关系,但没有任何东西进入我的RouteOnAttribute处理器,队列只是坐在那里直到它填满10,000.

我需要路由完整的JSON,我不能丢失路由中的信息.

在此输入图像描述

Shu*_*Shu 7

问题是jsonPath函数适用于流文件属性,但您没有与流文件关联的Payload属性.

如何将属性添加到流文件?

在generateflowfile处理器之后使用带有destination作为flowfile-attribute的EvaluateJsonPath处理器,

添加新属性

payload.alert为$ .Payload.Alert

在此输入图像描述 然后使用routeonattribute处理器添加新属性

惊动

${payload.alert:equals('Critical')}
Run Code Online (Sandbox Code Playgroud)

流:

1.GenerateFlowFile
2.EvaluateJsonPath //extract the value and keep as attribute to the flowfile
3.RouteOnAttribute //check the attribute value
Run Code Online (Sandbox Code Playgroud)