LocalTime
是 Java 8 引入的一个类,用于表示一天中的时间(小时、分钟、秒和纳秒)。ISO 格式是一种标准的时间表示方法,通常用于数据交换和存储。
LocalTime
通常表示为 HH:mm:ss.SSS
或 HH:mm:ss
。以下是一个简单的 Spring Boot 应用示例,展示如何将 LocalTime
对象序列化为 ISO 格式,并在接收时反序列化。
确保你的 pom.xml
包含以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
import org.springframework.web.bind.annotation.*;
import java.time.LocalTime;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
@RestController
@RequestMapping("/api")
public class TimeController {
@PostMapping("/time")
public TimeResponse getTime(@RequestBody TimeRequest request) {
return new TimeResponse(request.getTime());
}
static class TimeRequest {
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalTime time;
public LocalTime getTime() {
return time;
}
public void setTime(LocalTime time) {
this.time = time;
}
}
static class TimeResponse {
private String isoTime;
public TimeResponse(LocalTime time) {
this.isoTime = time.toString();
}
public String getIsoTime() {
return isoTime;
}
}
}
为了确保 Jackson 正确处理 Java 8 日期和时间类型,可以添加以下配置:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
return mapper;
}
@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
return builder -> {
builder.modules(new JavaTimeModule());
};
}
}
问题:序列化后的时间格式不符合预期。
原因:可能是由于 Jackson 库未正确配置以支持 Java 8 日期和时间类型。
解决方法:确保添加了 JavaTimeModule
并正确配置了 ObjectMapper
。
通过上述配置和代码示例,你可以确保 LocalTime
对象在 Spring Boot 应用中以 ISO 格式正确序列化和反序列化。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云