2014-12-17 18 views
11

Używam wiosna-boot i mam klasa podmiot zdefiniowany coś takiegojson na wiosnę-boot

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

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

Kiedy ta klasa jest konwertowany do formatu JSON, pole zostanie przekonwertowany na następujący ciąg znaków

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

Chcę mieć odpowiedź json jako yyyy-MM-dd.

Próbowałem adnotacji @DateTimeFormat(iso = ISO.DATE) i to też nie pomogło.

Czy istnieje prosty sposób na konwersję do właściwego formatu json?

Odpowiedz

26

Są trzy rzeczy, które trzeba zrobić, aby sformatować datę jako yyyy-MM-dd:

  1. dodać zależność od com.fasterxml.jackson.datatype:jackson-datatype-joda. Sądząc po wynikach, jakie otrzymujesz w tej chwili, myślę, że możesz już mieć tę zależność.
  2. Skonfiguruj Jackson, aby nie formatować dat jako znaczników czasu, dodając spring.jackson.serialization.write-dates-as-timestamps: false do pliku application.properties.
  3. Opisywanie pola LocalDataTime lub metody getter z @JsonFormat(pattern="yyyy-MM-dd")

Uwaga: Musisz użyć Wiosna Boot 1,2 do kroku 2 do pracy.

+0

Dziękuję. Musiałem uaktualnić do wersji 1.2, a następnie dodać właściwość do pliku application.yaml i zadziałało to dla mnie. Nie potrzebna adnotacja @JsonFormat –

+0

Którą właściwość trzeba było dodać w pliku application.yaml, aby zmienić format daty? – Maksim

+0

Krok 3 wydaje się niepotrzebny (jest to format domyślny). I faktycznie wydaje się nieskuteczny, jeśli spróbujesz innych formatów. Nadal badam, ale wydaje mi się, że nawet nie patrzę na adnotację JsonFormat – rewolf