Если нет возможности использовать аннотацию JsonFormat
, вы должны включить свою собственную «глобальную». У меня работает следующий код:
public class CustomJsonDateDeserializer extends JsonDeserializer<Date> {
@Override
public Date deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext)
throws IOException, JsonProcessingException {
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
String date = jsonParser.getText();
try {
return format.parse(date);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
И включите приведенный выше в веб-конфигурацию, в этом случае я протестировал Spring boot 2, используя MVC:
@Configuration
@EnableWebMvc
public class WebConfiguration implements WebMvcConfigurer {
...
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
JavaTimeModule module = new JavaTimeModule();
module.addDeserializer(Date.class, new CustomJsonDateDeserializer());
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);
// Add converter at the first one to use
converters.add(0, new MappingJackson2HttpMessageConverter(mapper));
}
}
И теперь вы можете протестировать его с помощью фиктивной конечной точки:
@PostMapping("/test")
public ResponseEntity<Boolean> test(@RequestBody SimplePOJO simplePOJO) {
return ResponseEntity.ok(true);
}
Позаботьтесь об этом , потому что это глобальный десериализатор Date
, то есть вам нужно управлять в CustomJsonDateDeserializer
во всех разрешенных форматах