Spring Boot中如何将日期字符串转为LocalDate对象集合
实现方案
你可以根据当前代码结构选择对应实现方式:
方案1:适配你当前手动从Map取值传参的逻辑
你接收到的unavailableDates字段值是带时间后缀的字符串列表,格式固定为yyyy-MM-dd HH:mm:ss.SSS,直接指定格式逐个解析即可,代码如下:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; // 定义匹配入参格式的日期解析器 DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); // 取出字段值,和你取其他字段的逻辑一致,强转为List结构 List<?> rawDateList = (List<?>) requestBody.get("unavailableDates"); List<LocalDate> parsedDates = new ArrayList<>(rawDateList.size()); for (Object rawDate : rawDateList) { String dateStr = rawDate.toString(); // 解析后直接得到LocalDate,时间部分会自动适配忽略 parsedDates.add(LocalDate.parse(dateStr, dateFormatter)); } // 直接把parsedDates传入Couch构造器即可 new Couch(requestBody.get("name"), ..., Integer.parseInt(requestBody.get("postalCode")), ..., parsedDates, ...);
注意:你Couch类里的属性名拼写有误,正确拼写应为
unavailableDates(当前写法少了字母l),如果后续用框架自动反序列化,拼写错误会导致字段映射失败,建议提前修正。
方案2:Spring Boot标准实现(推荐,省掉手动解析逻辑)
不用手动从Map里逐个取字段做类型转换,直接利用Spring Boot内置的Jackson反序列化能力,自动把请求体转成Java对象:
- 首先定义请求对应的DTO类,给日期字段指定格式规则:
import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDate; import java.util.List; public class CouchCreateReq { private Long id; private String name; private String street; private Integer houseNumber; private Integer postalCode; private String city; private Integer sleepingSpots; // 指定入参日期格式,框架会自动把字符串转成LocalDate列表 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") private List<LocalDate> unavailableDates; // 生成全参构造、getter、setter即可,也可以用Lombok的@Data注解简化代码 } - 直接在Controller方法参数上用这个DTO接收请求体,框架会自动完成所有字段的类型转换:
@PostMapping("/couch/create") public Couch createCouch(@RequestBody CouchCreateReq req) { // 这里拿到的req.getUnavailableDates()已经是转好的List<LocalDate>,可直接使用 return new Couch(req.getName(), req.getStreet(), ..., req.getPostalCode(), ..., req.getUnavailableDates()); }
说明:Spring Boot 2.x及以上版本的web starter默认已经包含Java 8时间类型的Jackson解析依赖,不需要额外引入;如果是1.x版本,需要手动添加
jackson-datatype-jsr310依赖。
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

