我正在使用GetTwitter和EvaluateJsonPath处理器从twitter流API中提取主题标签,之后我通过一个AttributeToJson处理器传递流文件,该处理器将创建一个名为“hashtags”的属性,并将追加hashtags的值,这是一个数组喜欢
[{"text":"Ascendant","indices":[0,10]},{"text":"MediumCoeli","indices":[13,25]},{"text":"Cancer","indices":[75,82]},{"text":"Pisces","indices":[103,110]}]
并将其附加到JSON Stream,但这将在AttributeToJson处理器的输出中用双引号括起来,例如:
"[{\"text\":\"Ascendant\",\"indices\":[0,10]},{\"text\":\"MediumCoeli\",\"indices\":[13,25]},{\"text\":\"Cancer\",\"indices\":[75,82]},{\"text\":\"Pisces\",\"indices\":[103,110]}]"
如何在没有AttributeToJson处理器输出的双引号的情况下将其作为JSON数组。
答案 0 :(得分:2)
我建议使用JoltTransformJSON处理器(在NiFi 0.7.0及更高版本中提供),让您使用Jolt规范语言来转换JSON。在上面使用Jolt的示例中,您可以创建包含以下内容的链式操作:
[
{
"operation": "shift",
"spec": {
"entities": {
"hashtags": {
"*": "hashtags"
}
}
}
}
]
在这种情况下,Jolt处理器将从条目映射中提取hashtags数组,并将结果提取到流文件内容(而不是在属性中),并保留适当的数据类型。因此,文本等没有其他引号。
Jolt Processor具有高级用户界面,因此您可以在流程中启用转换之前测试转换。下面是在其UI中测试的示例的快照(示例使用NiFi版本1.3.0)。顶部是正在测试的Jolt规范,底部有测试Twitter有效负载以及结果输出:
我希望这有用!有关JoltTransformJSON的其他信息,请查看NiFi Documentation并在左侧导航菜单中按名称搜索处理器。另外,有关Jolt的信息,请访问website,了解有关创建Jolt规范的详细信息。