使用 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 数组周围添加括号。使用 ExecuteScriptJoltTransformJSON 处理器还有其他方法可以实现此目的,但它们更加复杂和脆弱。