Spring Mvc 字符串转日期异常(Can not deserialize value of type Date from String)
问题重现
在使用springMVC时,当我们页面提交的某个值是2020-09-01 14:43:44
这种形式的值,而我们后台JavaBean采用Date格式来接收,就会报错
Can not deserialize value of type Date from String
原因
项目中采用就jackson作为反序列工具,jackson默认支持的日期反序列格式有如下
- yyyy-MM-dd’T’HH
ss.SSSZ
- yyyy-MM-dd’T’HH
ss.SSS’Z’
- EEE, dd MMM yyyy HH
ss zzz
- yyyy-MM-dd
默认是不支持yyyy-MM-dd HH
这种格式的,所以反序列化失败ss
解决方案
方案一、重写jackson反序列化
package com.bxoon.config;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/** * @author :GuangxiZhong * @date :Created in 2020/9/1 11:41 * @description: * @modified By: * @version: 1.0 */
public class CustomJsonDateDeserializer extends JsonDeserializer<Date> {
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = jsonParser.getText();
try {
return format.parse(date);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
同时在对应类的Date字段上加上如下注解
@JsonDeserialize(using = CustomJsonDateDeserializer.class)
private Date txnTime;
方案二、直接使用jackson注解,不需要重写反序列化
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date txnTime;
方案三、直接使用fastjson注解,不要重写反序列化
引入fastjson
包
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.32</version>
</dependency>
<!-- jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.4</version>
</dependency>
Date字段上加上注解
@JSONField(format = “yyyy-MM-dd HH:mm:ss”)
private Date txnTime;
原文:https://blog.csdn.net/a718515028/article/details/85245957
还没有评论,来说两句吧...