2016-04-05 8 views
1

Ich benutze Spring Boot mit JPA und Jodatime.Jackson Serializaton von Joda LocalTime

Zur Zeit habe ich ein Attribut Modell wie folgt kommentierte:

@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalTime") 
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm") 
private LocalTime startTime; 

Wenn serialisiert, die JSON immer:

{ 
"startTime" : { 
     "hourOfDay" : 12, 
     "minuteOfHour" : 0, 
     "secondOfMinute" : 0, 
     "millisOfSecond" : 0, 
     "chronology" : { 
     "zone" : { 
      "fixed" : true, 
      "id" : "UTC" 
     } 
     } 
} 

Ich möchte wissen, ob es einen Weg gibt, dieses Attribut zu serialisiert werden wie folgt aus:

{ 
    "startTime": "12:00" 
} 

ich habe versucht, dass @JsonFormat Anmerkung, b zu setzen Aber es scheint nicht zu funktionieren.

+0

Mögliche Duplikat von [Wie Joda Datetime mit Jackson JSON processer serialisiert?] (Http://stackoverflow.com/questions/3269459/how-to-serialize-joda-datetime-with-jackson-json- processser) – Savior

Antwort

3

Man könnte so etwas wie tun:

@JsonSerialize(using = MyLocalTimeSerializer.class) 
private LocalTime startTime; 

und dann MyLocalTimeSerializer.class erstellen:

public class MyLocalTimeSerializer extends JsonSerializer<LocalTime> { 

    @Override 
    public void serialize(
      LocalTime time, 
      JsonGenerator gen, 
      SerializerProvider arg2) throws IOException, JsonProcessingException { 
     gen.writeString(time.toString("HH:mm")); 
    } 

} 

Dies erfordert die Jackson-databind Bibliothek.

<dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${jackson.databind-version}</version> 
    </dependency> 
+0

Das hat funktioniert, danke! – inafalcao

+0

sollte JsonSerializer nicht erweitern? – kandan

+0

@kandan Yup! Ich werde es reparieren! –