我将 Spring Boot 与 JPA 和 Jodatime 结合使用。
目前我有一个像这样注释的模型属性:
@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
注解,但它似乎不起作用。
最佳答案
你可以这样做:
@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"));
}
}
这需要 jackson-databind 库。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.databind-version}</version>
</dependency>
关于java - joda LocalTime的Jackson连载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36415955/