Как преобразовать неформатированный текстовый файл в формат JSON с помощью NiFi - PullRequest
0 голосов
/ 03 июня 2019

У меня есть файл, и с помощью NiFi мне нужно преобразовать данные в формат JSON.Мои образцы текстовых данных (у меня очень большие данные):

{

    2121=0,
    710=-350
    711=21646343,-565:27055312343,#-4129:213,-345:
    715=-366,
    813=uhueairghubg,
    814=tsbb rgkjss
    815=
    816=fine on irea
    846=1
}
{

    331=92222930003
    335=went.srwfwr.rffarf
    336=4
    338=0
    354=1099r5834
    355=16777217
    358=0
    361=0
    364=1
    368=11
    373=1280;128;#3262
}

Теперь мне нужно преобразовать эти данные в правильные данные файла JSON, как показано ниже

[{

    "2121":"0",
    "710":"-350",

       "711":"215564446343,-800:27055312343,#-4129:215687174603,-800:",
    "715":"-366",
    "813":"uhueairghubg",
    "814":"tsbb rgkjss",
    "815":" ",
    "816":"fine on irea",
    "846":"1"
},
{

    "331":"9595930003",
    "335":"went.srwfwr.rffarf",
    "336":"4",
    "338":"0",
    "354":"1099r5834",
    "355":"16777217",
    "358":"0",
    "361":"0",
    "364":"1",
    "368":"11",
    "373":"180;18;#362"
}]

Как я могу заменить эти значенияв нифи?

1 Ответ

2 голосов
/ 03 июня 2019

Вы должны сделать это на нескольких отдельных уровнях:

Уровень 1: Добавить упаковщик котировок и преобразовать = в :

шаблон:

([^\s]+?.*)=((.*(?=,$))+|.*).*

* замена

"$1":"$2"

Образец: Regex101

Level2 Добавить запятую в конце каждой строки внутри объектов

pattern

((}(?=\n{))|(\".*\":\".*\"))\n(?!})

замена

$1,\n

Образец: Regex101

Уровень 3 Поставьте [ в начале и ] в конце вашей строки

Готово.

...