Не удается извлечь данные Json в Apache-NiFi - PullRequest
1 голос
/ 08 ноября 2019

Я написал приведенную ниже команду POST и с помощью процессора " HandleHttpRequest " получил запрос POST в Apache NiFi

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"employeeDetails":{"empid":"124","empname": "praveen"}}' http://localhost:7002

Я могу получить данные json в "handleHttpRequest""процессор, как показано ниже

enter image description here

, когда я проверяю очередь списка, я могу видеть данные json

enter image description here

Сведения о HandleHttpProcessor

enter image description here

Но я хочу извлечь empid и проверить, является ли empid моих данных json нулевымили нет, я пытался " ExtractText ", " ReplaceText ", " UpdateAttribute ", " EvaluateJsonPath " и т. д. Процессоры для получения подробностей empolyee, но я не могу это сделать.

Оценить JJ подробности пути

enter image description here

Я получаю "файл потока не было допустимого содержимого JSON"ошибка в процессоре EvaluateJsonPath

Как извлечь empdata и проверить, является ли он пустым или нет?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2019

У меня есть те же два процессора, что и у вас, кроме того, у меня также добавлен HandleHTTPResponse, так что моя команда curl завершается аккуратно, без отправки дополнительных буферных сообщений, которые приводят к сбою компонента EvaluateJSONPath с недопустимой ошибкой JSON (возможно, это могло произойтибыл и твой случай). Поток HTTP-запросов

Также, как упомянул @Behrouz Seyedi, вам нужно будет использовать одинарную кавычку в вашей команде. Это моя команда curl

curl -v -H "Content-type: application/json" -X POST -d '{"employeeDetails":{"empid":"124","empname": "praveen"}}' http://localhost:7003

Это снимок экрана для процессора EvaluateJSONPath.

Это ответ EvaluateJSONPath empid

0 голосов
/ 08 ноября 2019

Проблема не связана с NiFi. Вы должны публиковать данные с CURL следующим образом (изменить двойную кавычку " на одинарную кавычку ' после -d):

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"employeeDetails":{"empid":"124","empname": "praveen"}}' http://localhost:7002
...