问题描述
我使用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 (将#修改为@)