【问题标题】:Need help on retrieving JSON attributes from a flow file in Apache NiFi需要帮助从 Apache NiFi 中的流文件中检索 JSON 属性
【发布时间】:2017-06-16 09:35:24
【问题描述】:

我正在尝试使用 NiFi 中的 EvaluvateJsonPath 处理器从 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;"
    }
}}

下面是我的配置。

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

更新:

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

【问题讨论】:

    标签: json apache-nifi


    【解决方案1】:

    你给"Name"-->$.widget.window.name是正确的。

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

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

    EDIT-1

    如果您将返回类型更改为 json,那么您可以接收到要存储在属性 ${Name} 中的预期输出 "main_window"`。

    之后您可以使用 ReplaceText 处理器指定替换值 "${Name}" 然后您可以在 flowfile 中接收 "main_window"

    它可以为我工作。

    如果您遇到任何问题,请告诉我

    【讨论】:

    • 我已经尝试了其他选项(即 Scalar 和 Json),但我得到了完整的字符串作为输出。还有什么问题吗?
    • 你的意思是输出是流文件还是属性值?
    • 流文件。我在队列中看到了输出。
    • 好的,但您的问题是您已尝试将“Main_window”存储在该属性中。现在我已经编辑了我的答案,只在 flowfile 中接收“Main_window”。检查我的 EDIT-1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2020-09-19
    • 2017-02-08
    • 1970-01-01
    • 2019-04-25
    相关资源
    最近更新 更多