全局将spring.jackson.serialization.write-dates-as-stamps和日期格式设置为ISO1806

时间:2018-08-06 15:59:21

标签: spring spring-boot jackson

我知道,关于这个问题,有几个类似的问题,但是我找不到任何令人满意的解决方案。那就是为什么我想在这里重新打开它。

  • 我想将JSON serializationDates (java.util)的{​​{1}}设置为SpringBoot格式。

我尝试过:

添加依赖: ISO1806

设置属性

com.fasterxml.jackson.datatype:jackson-datatype-joda例如

-努力工作。静止时间戳

还尝试了其他一些解决方案,但是它们没有起作用,或者已被弃用或被黑等...

  • 那么如何用当前状态正确解决呢?

旁注: 我无法使用用户spring.jackson.serialization.write-dates-as-timestamps=false spring.jackson.date-format=yyyy-MM-dd'T'HH:mm:ss'Z'注释,因为这些类是由旧系统生成的,而我现在无法访问。因此,我寻求一个全局解决方案。无论如何,全球性的灵魂似乎是合乎逻辑的。

希望有人可以提供帮助。 预先感谢您的任何提示。

亲切问候

格雷戈尔

2 个答案:

答案 0 :(得分:0)

您可以使用序列化来实现。只需将此bean添加到您的配置类中,然后根据需要编写序列化类。

@Bean
    public Jackson2ObjectMapperBuilder configureObjectMapper() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
        ObjectMapper objectMapper = new ObjectMapper();
        SimpleModule module = new SimpleModule();
        module.addSerializer(Date.class, new CustomDateSerializer());
        objectMapper.registerModule(module);
        builder.configure(objectMapper);
        return builder;
    }

序列化器类:

public class CustomDateSerializer extends JsonSerializer<Date>{
    @Override
    public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        String date = null;//parse here as per your requirement.
        gen.writeString(date);
    }
}

答案 1 :(得分:0)

@Bean
@Primary
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
    ObjectMapper objectMapper = builder.build();
    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    return objectMapper;
}