So che è una vecchia domanda ma rispondo perché ho avuto lo stesso problema oggi e ho perso 4 ore di lavoro per trovare la soluzione. Il problema qui è la primavera usa Jackson per serializzare e deserializzare JSON. L'annotazione @DateTimeFormat
non farà il lavoro, devi dire a Jackson come serializzare la data.Avete due soluzioni: la prima è la più semplice ed è quello di utilizzare @JsonFormat
annotazioni nel metodo getter:
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd/MM/yyyy")
public Date getDob(){
return dob;
}
La seconda soluzione è quella di creare un serializzatore personalizzato per i campi data così:
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);
}
}
e quindi utilizzare l'annotazione nel metodo get:
@JsonSerialize(using=JsonDateSerializer.class)
public Date getDob(){
return dob;
}
questo link spiega come fare il serializzatore
https://dzone.com/articles/how-serialize-javautildate
ho affrontato un altro problema, mi importava nella mia classe JsonDateSerializer le classi da org.codehaus.jackson
pacchetto, ma la primavera mi gived questo errore:
java.io.FileNotFoundException: class path resource [org/codehaus/jackson/map/JsonSerializer.class] cannot be opened because it does not exist
Così ho cambiato tutte le importazioni al pacchetto
com.fasterxml.jackson
e tutto funziona correttamente. Spero possa aiutare qualcuno.
Come si "stampa" quell'output? Chiedo perché sembra che l'annotazione non sia stata presa in considerazione. – Ralph
Vorrei utilizzare l'API [Joda-time] (http://joda-time.sourceforge.net/) (poiché è sempre la mia preferenza) e certamente non le API di data e ora predefinite di Java SE. Se utilizzi Spring 3.2, puoi registrare un editor di proprietà personalizzato direttamente con ['@ ControllerAdvice'] (http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework /web/bind/annotation/ControllerAdvice.html) per soddisfare qualsiasi esigenza. – Lion