apache-nifi - 如何为 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 。有没有一个处理器可以处理这个问题?
解决方案
您的传入流文件是否有任何现有内容?如果没有,您可以使用ReplaceContent
将内容设置为["arrayItem1", "arrayItem2"]
或您希望 JSON 看起来像的任何内容。
如果传入流文件具有现有 JSON 内容,您可以使用JoltTransformJSON
或显式添加字段(不带属性) UpdateRecord
。
推荐阅读
- regex - 我如何使用 sed -i 命令替换从文件中的特定行开始到另一行的字符的出现?
- apache - 从 Apache 缓存中排除包含图像的特定文件夹?
- r - 无法识别 Rcpp 并行
- php - PHP/MySQL:用倍数更新倍数 WHERE
- java - 处理意外弹出后重试相同的 findElement 语句
- python - 如何设置约束以允许最多选择 2 个字段?
- jquery-ui - 带有 Font Awesome 不良效果的 jQuery UI(使用 jQuery 3.2.1)
- python - Python - 从变量中提取数据的正则表达式
- r - 如何将 stl 输出转换为数据帧但保持时间序列时间步长?
- node.js - Sqlite3 安装卡在“unpacking node_sqlite3.node”