Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json @DateTimeFormat在Spring引导中不与类成员一起工作_Json_Spring Boot_Date_Validation - Fatal编程技术网

Json @DateTimeFormat在Spring引导中不与类成员一起工作

Json @DateTimeFormat在Spring引导中不与类成员一起工作,json,spring-boot,date,validation,Json,Spring Boot,Date,Validation,我的pojo课程如下所示 公营雇员{ private int empId; @NotEmpty private String empName; @DateTimeFormat(pattern = "dd/MM/yyyy") private Date empDoj; public int getEmpId() { return empId; } public void setEmp

我的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 ;
    }
当我从postman发送下面的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-MM-MM-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) {        
}


它工作正常。将给定模式中指定的字符串转换为日期对象,那么为什么不使用Java类成员呢?在文档中,它还说它可以用于方法参数或格式化为给定日期类型字段的字段

,因为您发送的是JSON,您需要添加@JsonFormat(pattern=“dd/MM/yyyy”)对empDoj的注释。如果您的所有日期都是这种格式,您可以在application.properties文件中设置spring.jackson.date format=dd/MM/yyyy。

有关我投票结束的一些详细信息

您正试图使用SpringBoot参数注释来指定JSON格式。 我相信您需要使用
JsonFormat
注释
(如buræquete对的答复所述)

Lee非常感谢您的回答。虽然它正在工作,但为什么我们需要使用@JSONFormat。根据文档,它是一个通用注释,用于配置属性值如何序列化的详细信息。这里涉及的属性主要是与日期相关的序列化。在这种特殊情况下,我只需要我的JSON字符串获取模式格式并将其转换为给定的日期对象。为什么这里需要JsonFormat?因为Jackson正在序列化/反序列化JSON,所以您需要使用Jackson注释。如果Spring正在序列化/反序列化请求体,则DateTimeFormat将起作用。DateTimeFormat也适用于自Sprin以来的请求参数g序列化/反序列化这些。这是否回答了您的问题?@DwB您能对我在原始问题中所做的编辑发表意见吗?DateTimeFormat是Spring Boot注释,JsonFormat是Jackson注释。Spring Boot似乎不在“内部”搜索dateTimeFormat注释的方法参数类,它仅将其应用于方法参数。