在 NiFi 中,您可以使用 EvaluateJsonPath 处理器来判断 JSON 数组是否为空。
您可以设置 EvaluateJsonPath 处理器的 "JsonPath Expression" 为 "$.your_array_name.length()",这将返回 JSON 数组的长度。然后,您可以使用 RouteOnAttribute 处理器,根据长度判断 JSON 数组是否为空。
在 RouteOnAttribute 处理器中,您可以设置属性的值为 ${json:your_array_name:isEmpty()},这将返回 true 或 false,以指示 JSON 数组是否为空。然后,您可以将其与一个匹配器结合使用,以根据 JSON 数组是否为空来路由您的数据流。
下面是一个简单的示例流程,演示了如何检查 JSON 数组是否为空:
使用一个 GetFile 处理器读取包含 JSON 数据的文件。
将 JSON 数据传递到一个 EvaluateJsonPath 处理器,其中 "JsonPath Expression" 设置为 "$.your_array_name.length()","Destination" 设置为 flowfile-attribute。
将 JSON 数据传递到一个 RouteOnAttribute 处理器,其中 "Routing Strategy" 设置为 "Route to Property Name","Property Name" 设置为 empty,"Expression Language" 设置为 "true","Value" 设置为 ${json:your_array_name:isEmpty()}。
在 RouteOnAttribute 处理器中,添加两个关系,一个用于空 JSON 数组,另一个用于非空 JSON 数组。
根据您的需要,将空 JSON 数组和非空 JSON 数组发送到不同的处理器进行进一步处理。
注意:在将 JSON 数据传递到 EvaluateJsonPath 处理器之前,需要将 JSON 数据解析为 NiFi 中的 FlowFile,例如使用一个 ConvertRecord 处理器。另外,如果您要处理的 JSON 数据中包含嵌套的 JSON 数组或对象,您可能需要在 JsonPath 表达式中添加更多的属性来访问它们。
希望这个回答能够帮助您解决问题。