Feign客户端无法将地图中的日期序列化为字符串

问题描述

我使用Feign Client,并且请求正文中的数据类型为Map<String,Object>。映射的值可以是任何类型。但是,如果类型是日期(通常我使用zoneddatetime),则希望将该值序列化为字符串。 (例如“ 2015-06-28T03:39:43.176Z”)。我在配置中设置了自定义Decoder

class Configuration {
    @Bean
    public Decoder feignDecoder() {
      ObjectMapper objectMapper = new ObjectMapper()
          .findAndRegisterModules()
          .registerModule(new JavaTimeModule())
          .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false)
          .configure(SerializationFeature.WRITE_DATES_WITH_ZONE_ID,true)
          .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
          .setDateFormat(new StdDateFormat().withColonInTimeZone(true))
          .enable(SerializationFeature.WRITE_DATES_WITH_ZONE_ID);
      HttpMessageConverter<?> jacksonConverter = new MappingJackson2HttpMessageConverter(objectMapper);
      ObjectFactory<HttpMessageConverters> objectFactory = () -> new HttpMessageConverters(jacksonConverter);

      return new ResponseEntityDecoder(new SpringDecoder(objectFactory));
    }
}

当然,我已经将伪装客户端设置为使用该配置

@ReactiveFeignClient(
    name = "myClient",url = "${base-url}",configuration = Configuration.class
)

但是日期仍然序列化为Long(秒)。如何使日期序列化为字符串?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)