Dies liegt daran, dass die Eingabedaten nicht gültig JSON ist. Ich neu erstellt diese Strömung lokal und der Fehler von EvaluateJsonPath
ist
2017-08-22 10:20:21,079 ERROR [Timer-Driven Process Thread-5] o.a.n.p.standard.EvaluateJsonPath EvaluateJsonPath[id=0aec27af-015e-1000-fac5-4e0f455a10fe] FlowFile StandardFlowFileRecord[uuid=b903eeb0-8985-4517-910f-5e3bbbccb8dc,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1503421928125-1, container=default, section=1], offset=376, length=47],offset=0,name=91708717370829,size=47] did not have valid JSON content.
die zu kondensiert [Flowfile] nicht gültig JSON Inhalt hatte. Der Prozessor verwendet einen strengen Validierer und die von Ihnen angegebene Eingabe ist kein gültiger JSON. Sie müssen die Textbearbeitung oder reguläre Ausdrücke verwenden, um diesen Inhalt zu folgenden aktualisieren:
{"productName":"tv", "locationName":"chennai"}
Sobald Sie dies erreicht haben (über ReplaceText
, etc.), die EvaluateJsonPath
Prozessor richtig funktionieren.
Auch, um klar zu sein, EvaluateJsonPath
ist entworfen, um JSONPath Ausdrücke ausführen, um JSON-Werte zu Flowfile-Attribute zu extrahieren. Es ist nicht dazu bestimmt, beliebigen Text in das JSON-Format zu manipulieren.
aktualisiert
Es gibt keinen universellen Prozess beliebige Daten zu JSON zu konvertieren. Gegeben Sie den spezifischen Eingang versehen, werden die folgenden Werte für ReplaceText
wandeln diese in gültige JSON:
- Suchen Wert:
(?<!\")(\w+)(?=[\s:])
- Ersatzwert:
"$1"
- Ersetzungsstrategie:
Regex Replace
- Bewertungsmodus:
Entire text
Wenn Sie eingehende Daten erhalten, die auf andere Weise ungültig sind, müssen Sie mod ify dieser Prozess. Sie könnten an etwas wie JSONLint interessiert sein, um Ihre eingehenden Daten zu validieren und zu formatieren.
Andy, Danke für die Antwort, ja, ich verstehe, es ist nicht korrekt formatieren Wie konvertiere ich meine eingehende Zeichenfolge zu JSON. Haben wir irgendeine Komponente, die sich darum kümmert? oder wie mache ich es in ReplaceText, könnten Sie bitte Probe von Text ersetzen, die groß wäre. – Barath
Siehe das Update in der Antwort. – Andy
Andy, Danke für deine Hilfe, ich werde das ausprobieren. Wir haben viele komplexe Prozessoren für nifi, aber etwas wie ConvertStringToJson wird uns definitiv helfen, einfache Prozesse zu machen, anstatt Regex-Muster zu schreiben usw. Trotzdem vielen Dank für den Rat. – Barath