爬塔三国2手机版
3.25 MB · 2025-09-15
我们在反序列化时,通常使用以下注解:
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@JsonFormat
这个注解可以将日期序列化为我们指定的格式,同时也可以接收不同格式的日期到Java对象中,但是反序列化只支持一种格式。
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
时,前端传递yyyy-MM-dd HH:mm:ss
格式数据时会丢失精度;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
时,前端传递yyyy-MM-dd
格式数据会报错如果想要在反序列化时指定多种格式,可以使用@JsonDeserialize(using = xxxDateDeserializer.class)
xxxDateDeserializer继承JsonDeserializer
允许自定义接收哪些格式,代码:
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.util.Date;
@Slf4j
public class XxxDateDeserializer extends JsonDeserializer<Date> {
public XxxDateDeserializer() {
}
@Override
public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
// 使用hutool的日期解析 此处可以自定义格式解析
String dateStr = p.getText();
if (dateStr == null || dateStr.trim().isEmpty()) {
return null;
}
try {
return DateUtil.parse(dateStr);
} catch (Exception e) {
log.warn("hutool Date format failed: {}" ,dateStr);
}
throw new IOException("Date format failed: " + dateStr);
}
}
Date
、LocalDateTime
等类型格式化成我们想要的字符串格式。Date
、LocalDateTime
等类型。我们在 Java 对象与 JSON 字符串之间进行序列化和反序列化时,控制日期、时间、数字等类型数据的格式。