2015-03-13 16 views
21

Pracuję na rozruchu sprężyn do tworzenia aplikacji odpoczynku. I mam dto jak pokazano poniżej:Format daty w wyjściu json przy użyciu rozruchu sprężynowego

public class Subject { 

private String uid; 
private String number; 
private String initials; 
private Date dateOfBirth; 

i używam Spring-Hateos i rodzaj reurn mojego kontrolera jest ResponseEntity >>. Potrzebuję daty, która będzie wyświetlana w formacie "rrrr-mm-dd". I uderza mnie w to. Prosimy, pomóż mi, jak to osiągnąć. Z góry dziękuję.

Odpowiedz

22

Najprawdopodobniej oznacza "yyyy-MM-dd" małe ostatnie "m" oznaczałoby sekcji minut.

należy zrobić dwie rzeczy

  • dodać spring.jackson.serialization.write-dates-as-timestamps:false w application.properties spowoduje to wyłączenie konwersji dat na znaczniki czasu i zamiast używać ISO-8601 formatu zgodnego

  • Można niż dostosować format przez adnotacji metoda getter z tobą dateOfBirth własność z @JsonFormat(pattern="yyyy-MM-dd")

+0

Witam, Mam w obliczu problemu tutaj. Data wyświetlana w formacie json wynosi 1 dzień mniej. – Pramod

+3

Testowane przy pomocy Spring Boot 1.3.0 nie potrzebujesz '' 'spring.jackson.serialization.write-dates-as-timestamps''' ale wystarczy użyć' '' @ JsonFormat''' adnotacja – ngeek

+4

Czy istnieje sposób na zrobienie tego ze wszystkimi datami i nie trzeba dodawać adnotacji jeden po drugim? – ephemeralCoder

36

Jeśli posiadasz integrację Jackson z aplikacją do serializowania twojej fasoli do formatu JSON athn, możesz użyć anotacji Jackson @JsonFormat, aby sformatować datę na określony format.
W twoim przypadku, jeśli potrzebujesz daty w formacie yyyy-mm-dd, musisz podać @jsonFormat nad polem, w którym chcesz zastosować ten format.

Na przykład:

public class Subject { 

    private String uid; 
    private String number; 
    private String initials; 

    @JsonFormat(pattern="yyyy-MM-dd") 
    private Date dateOfBirth; 

    //Other Code 

} 

Z dokumentów:

Adnotacja stosowane do konfigurowania szczegóły dotyczące wartości właściwości mają być serializowane.

More Reference Doc

Może to pomoże.

+1

Witam, mam tu do czynienia z problemem. Data wyświetlana w formacie json wynosi 1 dzień mniej. – Pramod

+0

Proszę podać, jaką wartość przechowujesz i jak? z bazy danych lub czegoś innego –

+0

Pobieram datę z usługi mydła w formacie XMLGregorianCalendar. Przekonwertowałem to na java.util.Date, i jest konwertowane do formatu json. Na przykład: po przekonwertowaniu obiektu XMLGregorianCalendar na Date, wyświetla on 2014-02-11 w konsoli. Ale na wyjściu json wyświetla się 2014-02-10. – Pramod

1

Jeśli chcesz zmienić format dla wszystkich dat, możesz dodać moduł dostosowujący konstruktora. Oto przykład z fasoli, który konwertuje daty ISO 8601:

@Bean 
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() { 
    return new Jackson2ObjectMapperBuilderCustomizer() { 
     @Override 
     public void customize(Jackson2ObjectMapperBuilder builder) { 
      builder.dateFormat(new ISO8601DateFormat());   
     }   
    }; 
} 
Powiązane problemy