4

我的 spring 集成正在尝试从输入通道转换 JSON 消息,并通过提供相应的键从 JSON 消息中提取值。它抛出 SpelEvaluationException。

Spring集成配置

<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(payload, '$.[0].EVENTNAME'); 嵌套异常是org.springframework.expression.spel.SpelEvaluationException:EL1022E:函数'jsonPath'映射到无法调用的'class 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__=class java.util.ArrayList,contentType=application/json,

我可以知道这里出了什么问题吗?我什至也试过这个。相同的错误行为。

#jsonPath(payload, '$.EVENTNAME')

谢谢。

4

1 回答 1

3

EL1022E表示该jsonPath函数未注册为函数。

这意味着JsonPathjar 不在类路径上。

调试日志应该显示这个日志...

logger.debug("The '#jsonPath' SpEL function cannot be registered: " +
        "there is no jayway json-path.jar on the classpath.");
于 2017-05-05T16:19:06.617 回答