【问题标题】:Need help in update JSON attributes from different flow file in Apache NiFi需要帮助从 Apache NiFi 中的不同流文件更新 JSON 属性
【发布时间】:2017-06-22 15:58:09
【问题描述】:

我想用从其他处理器获得的值更新 JSON 文件中的属性。以下是我的原始 JSON 文件。

{
 "applicant": {
        "applicant-id": null
        "full-name": "Tyrion Lannister",
        "mobile-number" : "8435739739",
        "email-id" : "tyrionlannister_casterlyrock@gmail.com"
    },
    "product": {
        "product-category" : "Credit Card",
        "product-type" : "Super Value Card - Titanium"
    }
}

下面是我的 EvaluavateJsonPath 配置,我在其中提取了 applicant-id 属性。

下面是我的 GenerateFlowFile 处理器,它生成一个 id 值。

现在我需要使用原始 JSON 中的值 (899872120) 更新 applicant-id 属性,如下所示。

{
 "applicant": {
        "applicant-id": 899872120
        "full-name": "Tyrion Lannister",
        "mobile-number" : "8435739739",
        "email-id" : "tyrionlannister_casterlyrock@gmail.com"
    },
    "product": {
        "product-category" : "Credit Card",
        "product-type" : "Super Value Card - Titanium"
    }
}

我尝试使用 MergeContent 来合并 2 个流,我可以在 MergeContent 处理器之后的流文件中看到 Applicant-Id 属性值。我尝试使用 UpdateAttribue 更新 Applicant-Id 但我无法获取更新 JSON 记录。

下面是我的 MergeContent 配置。

我有什么遗漏的吗?

【问题讨论】:

    标签: json apache-nifi


    【解决方案1】:

    从 NiFi 1.2.0 开始,JoltTransformJSON 处理器支持 NiFi 表达式语言,因此如果您在属性“Applicant-id”中有您的 id 值,您可以在 Default 中使用它JOLT 规格:

    {
      "applicant": {
        "applicant-id": "${Applicant-id}"
      }
    }
    

    这应该将您的输入 JSON 转换为您想要的输出 JSON。

    【讨论】:

    • 谢谢垫。但是我们在环境中使用的是 1.1.0 版本。无论如何我们可以在那个版本中做吗?
    • 您应该能够使用 ReplaceText 匹配“application-id”:null 并将其替换为“application-id”:${Application-id}。这是一个更脆弱的,但应该适合您的输入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多