如何使用NiFi将未格式化的文本文件转换为JSON

时间:2019-06-03 06:07:28

标签: json regex apache-nifi

我有一个文件,使用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"
}]

如何在NiFi中替换这些值?

1 个答案:

答案 0 :(得分:2)

您应该在一些单独的级别中进行操作:

级别1: 添加引号包装并将=转换为:

模式:

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

*替换

"$1":"$2"

示例: Regex101

Level2 在对象内部每个字符串的末尾添加逗号

模式

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

替换

$1,\n

示例: Regex101

3级 在字符串的开头插入[,在字符串的末尾插入]

完成。