1

我正在使用 SpringBoot 2.2。日期格式是"validFrom": "2013-12-31T18:30:00.000+0000" 但我想要数字格式(如1411471800000)。在我的实体中,我包含了以下以数字格式工作的代码片段。

@JsonProperty("updDate")
**@JsonFormat(shape = JsonFormat.Shape.NUMBER)**
private Date updDate;

为了实现这一点,我将不得不在我的所有实体中做。有没有一种方法可以让我进行一次更改,它将适用于所有日期格式。

请指教

4

1 回答 1

0

您可以将自定义序列化器用于Date将用于序列化类型的Date类型。

public class DateSerializer extends StdSerializer<Date> {

  private static final long serialVersionUID = -7880057299936791237L;

  public JacksonLocalDateSerializer() {
    this(null);
  }

  public JacksonLocalDateSerializer(Class<Date> type) {
    super(type);
  }

  @Override
  public void serialize(Date value, JsonGenerator jsonGenerator,
      SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
    jsonGenerator.writeNumber(value.getTime());
  }
}

并将其添加到对象映射器中,以便Date类型对象始终使用您的自定义序列化程序进行序列化

@Configuration
public class JacksonConfig {
    
    @Bean
    @Primary
    public ObjectMapper configureObjectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        JavaTimeModule javaTimeModule = new JavaTimeModule();
        javaTimeModule.addSerializer(Date.class, new DateSerializer());
        objectMapper.registerModule(javaTimeModule);
        return objectMapper;
    }
}
于 2020-07-04T10:11:24.193 回答