Ошибка преобразования Spring Integration с выражением пути json

Моя весенняя интеграция пытается преобразовать сообщение JSON из входного канала и извлечь значение из сообщения JSON, предоставив соответствующий ключ. Это бросает SpelEvaluationException.

Конфигурация Spring Integration

<int:object-to-json-transformer input-channel="inputEventChannel" output-channel="jsonMapChannel"/>

<int:transformer input-channel="jsonMapChannel" output-channel="transformChannel" 
     expression="#jsonPath(payload, '$.[0].EVENTNAME')"/>

Сообщение об ошибке

Вызвано: org.springframework.messaging.MessageHandlingException: Ошибка оценки выражения: #jsonPath(полезная нагрузка, '$.[0].EVENTNAME'); вложенным исключением является org.springframework.expression.spel.SpelEvaluationException: EL1022E: функция 'jsonPath', сопоставленная с объектом типа 'класс org.springframework.expression.TypedValue', который не может быть вызван, failedMessage=GenericMessage [payload=[{"EVENTID":5064015,"EVENTNAME":"Account","EVENTID":"15590","APPLICATIONID":1,"CREATEDTIMESTAMP":1493929367000,"TRANSACTIONID":"100.2.33"}], headers={json__ContentTypeId__= класс org.springframework.util.LinkedCaseInsensitiveMap, id=acbc053a-b466-fbb9-8d3d-f60c78371b3e, json__TypeId__= класс java.util.ArrayList, contentType=application/json, timestamp=14939) 13939 = 149

Могу ли я знать, что здесь пошло не так? Я даже пытался с этим тоже. Такое же поведение ошибки.

#jsonPath(payload, '$.EVENTNAME')

Благодарю.

1 ответ

Решение

EL1022E означает, что jsonPath функция не зарегистрирована как функция.

Что означает JsonPath банка не на пути к классам.

В журнале отладки должен отображаться этот журнал...

logger.debug("The '#jsonPath' SpEL function cannot be registered: " +
        "there is no jayway json-path.jar on the classpath.");
Другие вопросы по тегам