2017-06-22 5 views
0

Ich möchte ein Attribut in einer JSON-Datei mit dem Wert aktualisieren, den ich von einem anderen Prozessor erhalte. Unten ist meine Original JSON-Datei.Benötigen Sie Hilfe beim Aktualisieren von JSON-Attributen aus verschiedenen Flussdateien in Apache NiFi

{ 
"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" 
    } 
} 

Unten ist mein EvaluavateJsonPath Config, wo ich die Bewerber-ID Attribut extrahiert.

enter image description here

Unten ist mein GenerateFlowFile Prozessor, der einen ID-Wert zu erzeugen.

enter image description here

Jetzt brauche ich das Update das Bewerber-ID Attribut mit dem Wert (899.872.120) in der Original-JSON als unten.

{ 
"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" 
    } 
} 

ich versuchte MergeContent zu verwenden, um die 2 fließt zu fusionieren und ich kann den Anmelderin-Id Attributwert in der Flow-Datei nach dem MergeContent Prozessor sehen. Ich versuchte mit UpdateAttribue zu aktualisieren Bewerber-Id, aber ich bin nicht in der Lage, den Update-JSON-Datensatz zu bekommen.

Unten ist meine MergeContent-Konfiguration.

enter image description here

Gibt es etwas, was ich vermisst habe?

Antwort

1

Ab Nifi 1.2.0 der JoltTransformJSON Prozessor unterstützt Nifi Expression Language, also wenn Sie Ihre ID-Wert in dem Attribut "Anmelder-id" haben, können Sie es in einem Standard JOLT spec verwenden:

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

Das sollte Ihre Eingabe JSON in Ihre gewünschte Ausgabe JSON verwandeln.

+0

Dank Mat. Aber wir verwenden die Version 1.1.0 in unserer Umgebung. Können wir in dieser Version trotzdem etwas tun? – Sathyaraj

+1

Sie sollten ReplaceText verwenden können, um "application-id" zu finden: null und ersetzen Sie es durch "application-id": $ {Application-id}. Dies ist etwas fragiler, sollte aber für Ihre Eingabe gut funktionieren. – mattyb

Verwandte Themen