首页 > 解决方案 > 如何为 AttributeToJSON 处理器将属性设置为数组?

问题描述

NiFi 版本 1.8.0

我正在尝试构建我的 json,我的一个字段需要是一个数组。我想我可以简单地使用 UpdateAttribute Processor 将我的属性设置为 '["arrayItem1", "arrayItem2"]',然后我可以使用 AttributeToJSON 将属性转换为 JSON 并将其转换为数组。不幸的是,它只是变成了一个字符串。

以最简单的方式,如何将属性设置为数组,以便我的最终 JSON(使用 AttributeToJSON 时)字段具有特定数组?

编辑 1

我将有几个 SyslogListeners,我想设置一个属性,以便我知道哪些数据来自哪里。我希望能够标记这些数据,所以我想添加一个 UpdateAttribute 来设置我的属性。我希望这是一个数组。所以标签为:

SyslogListener1 将是 ["tag1", "tag2"]

SyslogListener2 将是 ["tag3", "tag4"]

SyslogListener3 将是 ["tag1", "tag3"]

我想只是让我的流程看起来像这样:SyslogListener -> UpdateAttribute -> 然后所有数据现在都在主流程中 -> AttributeToJSON。但是,当我查看我的 JSON 时,我的字段是一个字符串,而不是一个数组。我怎样才能使这个字段成为一个数组?我以前做的是使用ReplaceText,唯一的问题是我不想为单个实例创建 ReplaceText 。有没有一个处理器可以处理这个问题?

标签: apache-nifi

解决方案


您的传入流文件是否有任何现有内容?如果没有,您可以使用ReplaceContent将内容设置为["arrayItem1", "arrayItem2"]或您希望 JSON 看起来像的任何内容。

如果传入流文件具有现有 JSON 内容,您可以使用JoltTransformJSON或显式添加字段(不带属性) UpdateRecord


推荐阅读