2016-04-05 99 views
1

我使用JPA和Jodatime的Spring Boot。joda的杰克逊序列化LocalTime

目前我有注解这样一个模型属性:

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

当系列化,JSON正成为:

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

我想知道如果有序列化属性的方式是这样的:

{ 
    "startTime": "12:00" 
} 

我试过把那个@JsonFormat注释掉,b它似乎并不奏效。

+0

的可能的复制[如何序列乔达日期时间与杰克逊JSON processer?](http://stackoverflow.com/questions/3269459/how-to-serialize-joda-datetime-with-jackson-json- processer) – Savior

回答

3

你可以这样做:

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

,然后创建MyLocalTimeSerializer.class:

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")); 
    } 

} 

这就要求杰克逊数据绑定库。

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

工作,谢谢! – inafalcao

+0

不应该扩展JsonSerializer ? – kandan

+0

@kandan是!我会解决它! –