我知道这是一个老问题,但我回答是因为我今天遇到了同样的问题,我浪费了 4 个小时的工作来寻找解决方案。这里的问题是 spring 使用 Jackson 来序列化和反序列化 JSON。@DateTimeFormat
注释不起作用,您必须告诉杰克逊如何序列化日期。您有两个解决方案:第一个更简单,@JsonFormat
在 getter 方法中使用注释:
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd/MM/yyyy")
public Date getDob(){
return dob;
}
第二种解决方案是为日期字段创建一个自定义序列化程序,如下所示:
public class JsonDateSerializer extends JsonSerializer<Date>{
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(date);
gen.writeString(formattedDate);
}
}
然后在get方法中使用注解:
@JsonSerialize(using=JsonDateSerializer.class)
public Date getDob(){
return dob;
}
这个链接解释了如何做序列化程序
https://dzone.com/articles/how-serialize-javautildate
我遇到了另一个问题,我在我的 JsonDateSerializer 类中导入org.codehaus.jackson
包中的类,但是 Spring 给了我这个错误:
java.io.FileNotFoundException: class path resource [org/codehaus/jackson/map/JsonSerializer.class] cannot be opened because it does not exist
所以我将所有导入更改为包
com.fasterxml.jackson
一切正常。我希望它可以帮助某人。