需要帮助来更新Apache NiFi中不同流文件的JSON属性

时间:2017-06-22 15:58:09

标签: json apache-nifi

我想用来自其他处理器的值来更新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 属性。

enter image description here

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

enter image description here

现在我需要使用原始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配置。

enter image description here

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:2)

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

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

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