如何在 Spring 集成中为 JsonObjectMapper 设置日期格式

How to set date format for JsonObjectMapper in Spring Integration

我正在使用 Spring 集成 ObjectToMapTransformertransformPayload().

将我的 Java 对象转换为 Map

一切正常,除了我对象中的 Instant 字段被分解为 epochSecondnano,这反过来在数据存储中持久化时抛出异常(MongoDB).

这是用于将 Object 转换为 Map 的 Spring 集成 JsonObjectMapperprivate final JsonObjectMapper<?, ?> jsonObjectMapper = JsonObjectMapperProvider.newInstance();

我的问题是如何为上述映射器配置日期格式。就像JacksonObjectMapper::configure()一样,我们这里有类似的选择吗? 我找不到任何东西,无论是在源代码中还是在互联网上!

我也在我的 application.properties 中尝试了 enabling/disabling 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()))