Java GET请求中将LocalDate作为参数时出现类型不匹配错误
我有下面的过滤器类,它有3个属性来搜索可用的书籍。我有两个搜索案例:搜索图书代码列表或按日期搜索Java GET请求中将LocalDate作为参数时出现类型不匹配错误,java,spring,spring-boot,postman,Java,Spring,Spring Boot,Postman,我有下面的过滤器类,它有3个属性来搜索可用的书籍。我有两个搜索案例:搜索图书代码列表或按日期搜索 @Data @Builder @AllArgsConstructor @NoArgsConstructor @ToString public class BookFilter { Set<Long> bookCodes; LocalDate fromDate; LocalDate toDate; } 但我陷入了类型不匹配错误:无法从类型字符串转换为Local
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class BookFilter {
Set<Long> bookCodes;
LocalDate fromDate;
LocalDate toDate;
}
但我陷入了类型不匹配错误:无法从类型字符串转换为LocalDate。我缺少什么?在LocalDate之前添加@JsonFormatpattern=dd-MM-yyyy
所以您的BookFilter类将如下所示
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class BookFilter {
Set<Long> bookCodes;
@JsonFormat(pattern = "dd-MM-yyyy")
LocalDate fromDate;
@JsonFormat(pattern = "dd-MM-yyyy")
LocalDate toDate;
}
在LocalDate之前添加@JsonFormatpattern=dd MM yyyy
所以您的BookFilter类将如下所示
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class BookFilter {
Set<Long> bookCodes;
@JsonFormat(pattern = "dd-MM-yyyy")
LocalDate fromDate;
@JsonFormat(pattern = "dd-MM-yyyy")
LocalDate toDate;
}
使用@RequestParam将LocalDate作为字符串发送,然后将其转换为所需的日期格式
在日期参数中使用@DateTimeFormat iso=DateTimeFormat.iso.DATE\u TIME和所需格式
此外,在此之前也有人就这一主题提出了一个非常类似的问题:
使用@RequestParam将LocalDate作为字符串发送,然后将其转换为所需的日期格式
在日期参数中使用@DateTimeFormat iso=DateTimeFormat.iso.DATE\u TIME和所需格式
此外,在此之前也有人就这一主题提出了一个非常类似的问题:
您可以使用自定义序列化程序/反序列化程序进行字符串到本地日期的转换
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM-dd-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate toDate;
添加以下依赖项后
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.7</version>
</dependency>
您可以使用自定义序列化程序/反序列化程序进行字符串到本地日期的转换
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM-dd-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate toDate;
添加以下依赖项后
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.7</version>
</dependency>
您需要向LocalDate成员添加@JsonFormat注释
请参阅此问题:您需要向LocalDate成员添加@JsonFormat注释
查看此问题:谢谢您的回答。我尝试了你的说法,但仍然在类型不匹配错误中出错:无法从类型字符串转换为LocalDate。请共享堆栈跟踪。另外,请让我知道您使用的是哪种应用程序?我在spring boot应用程序中对此进行了测试,它对我很有效。谢谢你的回答。我尝试了你的说法,但仍然在类型不匹配错误中出错:无法从类型字符串转换为LocalDate。请共享堆栈跟踪。另外,请让我知道您使用的是哪种应用程序?我在spring boot应用程序中对此进行了测试,它对我起到了作用。请描述OP的问题和你的答案,代码并不意味着什么。请描述OP的问题和你的答案,代码并不意味着你的答案。我试过你怎么说,但仍然在typeMismatch错误中出错:无法从类型字符串转换为LocalDate。我使用了我问题中的相同URL谢谢你的回答。我试过你怎么说,但仍然在typeMismatch错误中出错:无法从类型字符串转换为LocalDate。我使用了与我的问题相同的URL
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class BookFilter {
Set<Long> bookCodes;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
LocalDate fromDate;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
LocalDate toDate;
}