如何创建JSON属性而不包含Nifi中的双引号

时间:2017-07-20 02:53:46

标签: json apache-nifi

我正在使用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数组。

1 个答案:

答案 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有效负载以及结果输出: enter image description here

我希望这有用!有关JoltTransformJSON的其他信息,请查看NiFi Documentation并在左侧导航菜单中按名称搜索处理器。另外,有关Jolt的信息,请访问website,了解有关创建Jolt规范的详细信息。