@Bean public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer(){ JavaTimeModule module = new JavaTimeModule(); module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(GlobalTimeResolver.DATE_TIME_PATTERN))); module.addSerializer(new LocalDateSerializer(DateTimeFormatter.ofPattern(GlobalTimeResolver.DATE_PATTERN))); module.addSerializer(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(GlobalTimeResolver.DATE_TIME_PATTERN))); return builder -> { builder.simpleDateFormat(GlobalTimeResolver.DATE_TIME_PATTERN); // builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(GlobalTimeResolver.DATE_PATTERN))); // builder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(GlobalTimeResolver.DATE_TIME_PATTERN))); builder.modules(module); }; }
我们再写个接口测试下
@PostMapping("changeOrder") public AjaxJson changeOrder(@RequestBody OrderPO order){ mpOrderMapper.updateById(order); return AjaxJson.success(); }
可以看到成功
注意这里有个坑啊
我们必须至少在JavaTimeModule指定一个deserializer再添加进去
否则本配置则失效。。。这个还是从源码看到的
今天踩到这个坑,弄到2021-04-05 01:45:43有点无语
点进去modules查看源码
/** * Specify one or more modules to be registered with the {@link ObjectMapper}. * Multiple invocations are not additive, the last one defines the modules to * register. * <p>Note: If this is set, no finding of modules is going to happen - not by * Jackson, and not by Spring either (see {@link #findModulesViaServiceLoader}). * As a consequence, specifying an empty list here will suppress any kind of * module detection. * <p>Specify either this or {@link #modulesToInstall}, not both. * @since 4.1.5 * @see #modules(List) * @see com.fasterxml.jackson.databind.Module */ public Jackson2ObjectMapperBuilder modules(Module... modules){ return modules(Arrays.asList(modules)); }