我正在使用 Spring IntegrationObjectToMapTransformer
的transformPayload()
将我的 Java 对象转换为Map
。
一切都很好,除了我的对象中的Instant
字段被分解为epochSecond
和nano
,这反过来又在保留数据存储(MongoDB(时引发异常。
这是用于将Object
转换为Map
的 Spring 积分JsonObjectMapper
:private final JsonObjectMapper<?, ?> jsonObjectMapper = JsonObjectMapperProvider.newInstance();
我的问题是如何为上述映射器配置日期格式。就像Jackson
的ObjectMapper::configure()
一样,我们这里有类似的选择吗? 我找不到任何东西,无论是在源代码中还是在互联网上!!
我也尝试在我的application.properties
中启用/禁用spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS
,但没有快乐!
我的pom.xml
jackson-datatype-jsr310
依赖如何以正确的格式获取Instant
?
我认为我们应该添加对自定义JsonObjectMapper
注入的支持。这样您就可以根据所需的ObjectMapper
构建Jackson2JsonObjectMapper
。
请就此事提出JIRA票证,不要犹豫:https://github.com/spring-projects/spring-integration/blob/master/CONTRIBUTING.adoc
同时,作为一种解决方法,我建议一对ObjectToJsonTransformer
/JsonToObjectTransformer
:
.transform(Transformers.toJson(jsonObjectMapper(), ObjectToJsonTransformer.ResultType.NODE))
.transform(Transformers.fromJson(Map.class, jsonObjectMapper()))