使用Joda DateTime的Spring Integration的ObjectToMapTransformer

时间:2016-11-25 04:02:37

标签: spring-integration flatten

ObjectToMapTransformer transformer = new ObjectToMapTransformer();
transformer.setShouldFlattenKeys(true);

如何使用此转换器将Joda DateTime保存在其String表示中?

1 个答案:

答案 0 :(得分:1)

我的解决方案是复制ObjectToMapTransformer的源代码,并创建自己的ObjectToMapTransformer和Jackson2JsonObjectMapper。

在ObjectToMapTransformer中,添加一个getter函数来检索私有成员jsonObjectMapper。

在Jackson2JsonObjectMapper中,添加一个getter函数来检索私有成员objectMapper。

使用您自己的Jackson2JsonObjectMapper在ObjectToMapTransformer中创建jsonObjectMapper

基本上,替换

private final JsonObjectMapper<?, ?> jsonObjectMapper = JsonObjectMapperProvider.newInstance();

使用

private final JsonObjectMapper<?, ?> jsonObjectMapper = new Jackson2JsonObjectMapper();

请记住导入您自己创建的类而不是org.springframework导入

因此,您可以获取ObjectMapper的实例,然后配置ObjectMapper

    JsonObjectMapper<?, ?> jsonObjectMapper = transformer.getJsonObjectMapper();
    if(jsonObjectMapper instanceof Jackson2JsonObjectMapper){
        System.out.println("Configuring ObjectToMapTransformer Jackson2JsonObjectMapper");
        Jackson2JsonObjectMapper jackson2JsonObjectMapper = (Jackson2JsonObjectMapper)jsonObjectMapper;
        ObjectMapper mapper = jackson2JsonObjectMapper.getObjectMapper();
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        mapper.registerModule(new JodaModule());
    }