I know this is an old question, but I answer, because today I have the same problem and I lost 4 hours of work to find a solution. The problem here is spring uses jackson to serialize and deserialize JSON. @DateTimeFormat annotation will not do the job, you have to tell Jackson how to serialize the date. You have two solutions: the first one is simpler and should use the @JsonFormat annotation in the getter method:
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd/MM/yyyy") public Date getDob(){ return dob; }
The second solution is to create your own serializer for the date fields, for example:
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); } }
and then use the annotation in the get method:
@JsonSerialize(using=JsonDateSerializer.class) public Date getDob(){ return dob; }
this link explains how to make a serializer
https://dzone.com/articles/how-serialize-javautildate
I had another problem: I imported classes from the org.codehaus.jackson package into my JsonDateSerializer class, but spring gave me this error:
java.io.FileNotFoundException: class path resource [org/codehaus/jackson/map/JsonSerializer.class] cannot be opened because it does not exist
So, I changed all the import data in the package
com.fasterxml.jackson
and everything works fine. Hope this can help someone.
amicoderozer
source share