SpringBoot中使用Jackson 统一配置日期格式

#概述
在《Jackson,强大的java json解析器,方便json字符串、对象bean、map、数组list互相转换》一文中已经介绍了jackson的各种优秀转换能力,
这里继续介绍SpringBoot如何配置jackson,来统一转换日期格式

Jackson 统一配置 日期转换格式

方式一:配置文件yml中配置

spring:
    jackson:
        default-property-inclusion: ALWAYS
        time-zone: GMT+8
        date-format: yyyy-MM-dd HH:mm:ss

这样序列化后,Date类型会被格式化成配置中的格式。

方式二:配置类中配置
创建JacksonConfig.java

@Configuration
public class JacksonConfig {

    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    public Jackson2ObjectMapperBuilderCustomizer customJackson() {
        return new Jackson2ObjectMapperBuilderCustomizer() {
            @Override
            public void customize(Jackson2ObjectMapperBuilder builder) {
                builder.serializerByType(LocalDateTime.class,
                        new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                builder.serializerByType(LocalDate.class,
                        new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                builder.serializerByType(LocalTime.class,
                        new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
                builder.deserializerByType(LocalDateTime.class,
                        new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                builder.deserializerByType(LocalDate.class,
                        new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                builder.deserializerByType(LocalTime.class,
                        new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
                builder.serializationInclusion(JsonInclude.Include.NON_NULL);
                builder.failOnUnknownProperties(false);
                builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
            }
        };
    }
}

总结

以上就是常用的Jackson 统一配置日期格式。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 使用 Jackson 进行 JSON 转换时,可以考虑以下几个优化方案: 1. **使用配置类自定义 ObjectMapper**:Spring Boot 默认使用的是 Jackson 的 `ObjectMapper`,你可以创建一个配置类,并通过 `@Bean` 注解自定义一个全局的 ObjectMapper。在自定义的 ObjectMapper ,你可以设置一些优化选项,如日期格式化、属性命名策略等,以满足你的需求。 ```java @Configuration public class JacksonConfig { @Bean public ObjectMapper objectMapper() { ObjectMapper objectMapper = new ObjectMapper(); // 设置日期格式化 objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); // 设置属性命名策略 objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); // 可以添加更多的配置 return objectMapper; } } ``` 2. **使用视图类控制输出内容**:如果你只需要输出对象的一部分字段,可以创建一个视图类来控制输出内容。通过 `@JsonView` 注解标记字段,并在需要输出的地方指定视图类,可以避免输出不必要的字段。 ```java public class Views { public static class Public {} public static class Internal extends Public {} } public class MyDto { @JsonView(Views.Public.class) private String publicField; @JsonView(Views.Internal.class) private String internalField; // getters and setters } ``` 3. **使用注解控制序列化和反序列化**:Jackson 提供了许多注解,可以更细粒度地控制序列化和反序列化过程。例如,你可以使用 `@JsonProperty` 注解重命名字段,在需要时使用 `@JsonFormat` 注解格式日期等。 ```java public class MyDto { @JsonProperty("new_name") private String oldName; @JsonFormat(pattern = "yyyy-MM-dd") private Date date; // getters and setters } ``` 4. **使用 Lombok 简化实体类**:如果你使用 Lombok 来简化实体类的编写,可以使用 `@JsonAutoDetect` 注解来指定序列化和反序列化的可见性。这样可以避免生成过多的 getter 和 setter 方法。 ```java @Data @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY) public class MyDto { private String field1; private String field2; } ``` 通过以上优化方案,你可以提高 Spring Boot Jackson 的转换性能和灵活性。根据你的实际需求,选择适合的优化方案即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值