为什么LocalDateTime在springboot中作为Reponsebody返回时被序列化为数组?

问题描述 投票:0回答:1

代码

@GetMapping("/testAjax.json")
public @ResponseBody AjaxResponse testAjax(){
        AjaxResponse response = new AjaxResponse();
DateTimeTest test = new DateTimeTest();
test.setDateTime(LocalDateTime.now());

response.addResponse("date", LocalDateTime.now());
response.addResponse("test", test);


return response;
}

回复

{"status":false,"response":{"date":[2024,10,21,11,12,20,417960408],"test":{"dateTime":[2024,10,21,11,12,20,417940363]}}}`

尝试添加

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
    MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
    ObjectMapper mapper = new ObjectMapper();

    JavaTimeModule module = new JavaTimeModule();
    mapper.registerModule(module);
    mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter));
    mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    jsonConverter.setObjectMapper(mapper);
    return jsonConverter;
}


@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.add(mappingJackson2HttpMessageConverter());
}

但不工作,

我想获取 dd/MM/yyyy 格式的日期

json spring spring-boot rest jackson
1个回答
0
投票

也许这段代码可以解决您的问题:

String result=DateTimeFormatter.ofPattern("dd/MM/yyyy").format(localDateTime);
© www.soinside.com 2019 - 2024. All rights reserved.