Spring Integration Object映射变换器

时间:2014-07-25 16:15:59

标签: spring-integration

我正在使用SI 4.0并尝试使用object-to-map-transformer,如下所示

<integration:object-to-map-transformer input-channel="inputChannel" 
    output-channel="outChannel" >
</integration:object-to-map-transformer>

我在inputChannel上发送了一个像Person类这样的对象。但是,当我开始测试时,它失败并出现以下错误

    Caused by: java.lang.IllegalStateException: Neither jackson-databind.jar, 
    nor jackson-mapper-asl.jar aren't presented in the classpath. at
org.springframework.integration.support.json.JacksonJsonUtils.<clinit>(JacksonJsonUtils.java:41)

我不明白为什么需要杰克逊。我查看了SI代码并且可以看到它需要Jackson类,但为什么需要这个 - 当我只需要将一个简单的对象映射到Map时?

由于

1 个答案:

答案 0 :(得分:1)

转换object to map的代码如下:

Map<String,Object> result = this.jsonObjectMapper.fromJson(this.jsonObjectMapper.toJson(payload), Map.class);

由于JsonObjectMapper的开箱即用实现是杰克逊,因此需要在类路径中显示最后一个。

我们决定对Map演示文稿使用JSON表示法,因为JSON中的任何对象都有基于地图的结构。

如果您有其他算法可以做同样的事情,欢迎您的贡献!

或者您可以使用该逻辑简单地实现自己的Transformer,并使用通用<transformer>