【发布时间】:2021-08-04 20:09:34
【问题描述】:
我的 pojo 类如下所示
公共类员工{
private int empId;
@NotEmpty
private String empName;
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date empDoj;
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Date getEmpDoj() {
return empDoj;
}
public void setEmpDoj(Date empDoj) {
this.empDoj = empDoj;
}
我正在接受控制器中的请求,如下所示
@RequestMapping(value = "/employee",method = RequestMethod.POST)
public Employee employee(@RequestBody @Valid Employee employee
) {
return employee ;
}
当我从邮递员发送以下 JSON 请求时,它给了我一个错误
{
"empName":"Anubhav",
"empDoj":"10/10/2019"
}
JSON 解析错误:无法从字符串“10/10/2019”反序列化 java.util.Date 类型的值:不是有效的表示(错误:无法解析日期值 '10/10/2019':无法解析日期“10/10/2019”:不兼容任何标准格式(“yyyy-MM-dd'T'HH:mm:ss.SSSX”、“yyyy-MM-dd'T'HH:mm:ss. SSS", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"));嵌套异常是 com.fasterxml.jackson.databind.exc.InvalidFormatException:无法从字符串“10/10/2019”反序列化类型为 java.util.Date 的值:不是有效的表示(错误:无法解析日期值 '10/10/ 2019':无法解析日期“10/10/2019”:不兼容任何标准格式(“yyyy-MM-dd'T'HH:mm:ss.SSSX”、“yyyy-MM-dd'T'HH :mm:ss.SSS", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))
在 [来源:(PushbackInputStream); l
当我对方法处理程序做同样的事情时
@RequestMapping(value = "/dateformat",method = RequestMethod.POST)
public Date dateex(@DateTimeFormat(pattern = "dd-MM-yyyy") @RequestParam(value = "date")Date date) {
}
它工作正常。将给定模式中指定的字符串转换为 Date 对象,那么为什么不使用 Java 类成员。在文档中还说它可以用于方法参数或格式化为给定日期类型字段的字段
【问题讨论】:
-
这能回答你的问题吗? Date format Mapping to JSON Jackson
-
@DwB 你能评论我在原始问题中所做的编辑吗?
-
DateTimeFormat 是 Spring Boot 注解,JsonFormat 是 Jackson 注解。看来 Spring Boot 没有在方法参数类的“内部”搜索 dateTimeFormat 注释,它只将其应用于方法参数。
标签: json spring-boot date validation