有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

joda LocalTime的java Jackson serializaton

我正在使用SpringBoot与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注释,但似乎不起作用


共 (1) 个答案

  1. # 1 楼答案

    你可以这样做:

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

    然后创建MyLocaltimeralizer。课程:

    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数据绑定库

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