2017-08-07 101 views
1

您好我是相当新的阿帕奇nifi,我需要从一个JSON字符串nifi extracttext commar分隔

flowfile看起来像这样

            \/ 
{"UserName:"John Doe", "Address":"22 smith st, Smithville, NSW","IP":"10.10.10.1} 

郊区是提取郊区始终是“地址”属性的commar分隔列表中的第二个最后一个值。有时它不会是在第二位置从左至右为有可能是这样的

{"UserName:"John Doe", "Address":"Level 10, 22 smith st, Smithville, NSW","IP":"10.10.10.1} 

我曾尝试使用正则表达式与[^,]+(?=,[^,]*$) 提取文本,但无法让它正确提取属性。

回答

1

我认为你没有使用extractText来提取Json值,它不是正确的方法来做到这一点。

您可以使用EvaluateJsonPath处理器在以下配置的帮助下提取Json属性的“地址”。

只需配置这些属性的目的是“flowfile内容”和返回类型为“的Json”

现在您必须添加名为"Address":$.Address的新属性。

在这里,您可以收到JSON的地址将被存储在名为属性“地址”,那么你可以在地址提取本郊区的第2列像${Address:substringBeforeLast(','):substringAfterLast(',')}.

看看这个表情指南,可能对你有用。

https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#substringafterlast https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#substringbeforelast