Конвертируйте строки JSON в массив JSON, используя Apache Nifi

У меня есть файл, который содержит (без схемы) закодированные данные JSON Lines.

Например:

{"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"}]

1 ответ

Решение

Самый простой способ сделать это в Apache NiFi - это использовать два ReplaceText процессоры. Во первых настройте как:

  • Поиск значения: \}\s*\{
  • Восстановительная стоимость: \},\{
  • Стратегия замены: Regex Replace
  • Режим оценки: Entire Text

Это удалит разрывы строк между кортежами и вставит запятые между ними. Во-вторых:

  • Поиск значения: (^.*$)
  • Восстановительная стоимость: [$1]
  • Стратегия замены: Regex Replace
  • Режим оценки: Entire Text

Это добавит заключающие скобки вокруг массива JSON. Есть и другие способы сделать это ExecuteScript или же JoltTransformJSON процессоры, но они более сложные и ломкие.

Другие вопросы по тегам