2017-06-16 89 views
2

我试图从NiFi中的EvaluateJsonPath processer中使用JSON文件获取属性值。在Apache NiFi中需要帮助从流文件中检索JSON属性

下面是示例JSON文件

{"widget": { 
    "debug": "on", 
    "window": { 
     "title": "Sample Konfabulator Widget", 
     "name": "main_window", 
     "width": 500, 
     "height": 500 
    }, 
    "image": { 
     "src": "Images/Sun.png", 
     "name": "sun1", 
     "hOffset": 250, 
     "vOffset": 250, 
     "alignment": "center" 
    }, 
    "text": { 
     "data": "Click Here", 
     "size": 36, 
     "style": "bold", 
     "name": "text1", 
     "hOffset": 250, 
     "vOffset": 100, 
     "alignment": "center", 
     "onMouseUp": "sun1.opacity = (sun1.opacity/100) * 90;" 
    } 
}} 

下面是我的配置。

Configuration

预期的输出应该是 “main_window”。但是我得到了整个JSON字符串作为输出。有人能指点我正确的方向吗,这里出了什么问题?

更新:

这是流文件内容,我看到在队列中EvaluvateJsonPath processer的结果。

enter image description here

回答

1

已正确给出"Name"-->$.widget.window.name

但是你必须指定"ReturnType"-->json不是"ReturnType"-->autodetect

这就是你收到整个json字符串的问题。

EDIT-1

如果更改返回类型为JSON,那么你可以收到预期的输出“main_window”`要存储在属性$ {Name}的

后,您可以使用ReplaceText处理器指定替换值“$ {Name}的”那么您可以在flowfile

它可以为我被工作得到“main_window”

,让我知道,如果你面对

+0

我已经试过其他选项(即标量和JSON)但我得到完整的字符串作为输出的任何问题。任何其他问题? – Sathyaraj

+0

你有意思输出是流文件还是属性值? –

+0

流文件。我在队列中看到输出。 – Sathyaraj