2017-06-22 5 views
0

JSONファイルの属性を他のプロセッサから取得した値で更新したいとします。以下は私のオリジナルのJSONファイルです。Apache NiIFの異なるフローファイルのJSON属性を更新する際に助けが必要

{ 
"applicant": { 
     "applicant-id": null 
     "full-name": "Tyrion Lannister", 
     "mobile-number" : "8435739739", 
     "email-id" : "[email protected]" 
    }, 
    "product": { 
     "product-category" : "Credit Card", 
     "product-type" : "Super Value Card - Titanium" 
    } 
} 

以下は、私が申請-ID属性を抽出し、私のEvaluavateJsonPath configです。以下

enter image description here

ID値を生成私GenerateFlowFileプロセッサです。

enter image description here

今はアップデートに以下のようにオリジナルJSONの値(899872120)と申請-ID属性を必要としています。

{ 
"applicant": { 
     "applicant-id": 899872120 
     "full-name": "Tyrion Lannister", 
     "mobile-number" : "8435739739", 
     "email-id" : "[email protected]" 
    }, 
    "product": { 
     "product-category" : "Credit Card", 
     "product-type" : "Super Value Card - Titanium" 
    } 
} 

私は2つのフローをマージするMergeContentを使用しようとしたと私はMergeContentプロセッサの後にフローファイル内申請-ID属性値を見ることができます。私はUpdateAttribueを使っての申請者IDを更新しようとしましたが、私は更新JSONレコードを取得できません。

以下は私のMergeContent Configurationです。

enter image description here

私は欠けているものはありますか? NiFi 1.2.0のよう

答えて

1

JoltTransformJSONプロセッサはNiFi表現言語をサポートしているので、あなたは、属性「申請-ID」であなたのid値を持っている場合、あなたはデフォルト JOLT仕様でそれを使用することができます。

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

これは、入力JSONを希望する出力JSONに変換する必要があります。

+0

ありがとうございました。しかし、環境では1.1.0バージョンを使用しています。とにかくそのバージョンでできることはありますか? – Sathyaraj

+1

ReplaceTextを使用して "application-id"と一致させることができるはずです:nullを "application-id":$ {Application-id}に置き換えます。これはより壊れやすいものですが、入力には問題ありません。 – mattyb

関連する問題