2014-12-17 15 views
11

Sto usando la primavera-boot e ho un qualcosa di classe di entità definita come questojson formato della data in primavera-boot

import org.joda.time.LocalDateTime; 
@Entity 
public class Project { 

    @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime") 
    private LocalDateTime start_date; 
... 
... 
} 

Quando questa classe viene convertito in JSON, il campo viene convertito al seguente rappresentazione di stringa

{"start_date":[2014,11,15,0,0,0,0],...., ...} 

voglio avere la risposta jSON come yyyy-MM-dd.

Ho provato l'annotazione @DateTimeFormat(iso = ISO.DATE) e non è stato di alcun aiuto.

Esiste un modo semplice per eseguire questa conversione in formato JSON corretto?

risposta

26

Ci sono tre cose che dovete fare per formattare la data come yyyy-MM-dd:

  1. aggiungere una dipendenza su com.fasterxml.jackson.datatype:jackson-datatype-joda. A giudicare dall'output che stai ricevendo in questo momento, penso che potresti già avere questa dipendenza.
  2. Configurare Jackson per non formattare le date come timestamp aggiungendo spring.jackson.serialization.write-dates-as-timestamps: false al file application.properties.
  3. annotare il campo LocalDataTime o il metodo getter con @JsonFormat(pattern="yyyy-MM-dd")

Nota: Avrete bisogno di usare Primavera Boot 1.2 per la fase 2 per il lavoro.

+0

Grazie. Ho dovuto eseguire l'aggiornamento a Spring 1.2 e quindi aggiunto la proprietà nel file application.yaml e ha funzionato per me. Nessuna annotazione @JsonFormat era necessaria –

+0

Quale proprietà dovevi aggiungere in application.yaml per cambiare il formato della data? – Maksim

+0

Il passaggio 3 sembra non essere necessario (è il formato predefinito). E in realtà sembra essere inefficace se si tenta qualsiasi altro formato. Sto ancora indagando, ma sembra che non stia nemmeno osservando l'annotazione di JsonFormat – rewolf

Problemi correlati