使用 Apache Nifi 将 JSON 行转换为 JSON 数组
Convert JSON Lines to JSON array using Apache Nifi
我有一个包含(无模式)JSON 行编码数据的文件。
例如:
{"foo" : "abc", "bar" : "def" }
{"foo" : "xyz" }
{"foo" : "ghi", "bar" : "jkl", "name" : "The Dude"}
我想使用 NIFI 将其转换为 JSON 数组:
[{"foo" : "abc", "bar" : "def" },{"foo" : "xyz" },{"foo" : "ghi", "bar" : "jkl", "name" : "The Dude"}]
在 Apache NiFi 中完成此操作的最简单方法是使用两个 ReplaceText
处理器。首先,配置为:
- 搜索值:
\}\s*\{
- 替换值:
\},\{
- 替换策略:
Regex Replace
- 评价模式:
Entire Text
这将删除元组之间的换行符并在它们之间插入逗号。第二个:
- 搜索值:
(^.*$)
- 替换值:
[]
- 替换策略:
Regex Replace
- 评价模式:
Entire Text
这将在 JSON 数组周围添加括号。使用 ExecuteScript
或 JoltTransformJSON
处理器还有其他方法可以实现此目的,但它们更加复杂和脆弱。
我有一个包含(无模式)JSON 行编码数据的文件。
例如:
{"foo" : "abc", "bar" : "def" }
{"foo" : "xyz" }
{"foo" : "ghi", "bar" : "jkl", "name" : "The Dude"}
我想使用 NIFI 将其转换为 JSON 数组:
[{"foo" : "abc", "bar" : "def" },{"foo" : "xyz" },{"foo" : "ghi", "bar" : "jkl", "name" : "The Dude"}]
在 Apache NiFi 中完成此操作的最简单方法是使用两个 ReplaceText
处理器。首先,配置为:
- 搜索值:
\}\s*\{
- 替换值:
\},\{
- 替换策略:
Regex Replace
- 评价模式:
Entire Text
这将删除元组之间的换行符并在它们之间插入逗号。第二个:
- 搜索值:
(^.*$)
- 替换值:
[]
- 替换策略:
Regex Replace
- 评价模式:
Entire Text
这将在 JSON 数组周围添加括号。使用 ExecuteScript
或 JoltTransformJSON
处理器还有其他方法可以实现此目的,但它们更加复杂和脆弱。