zoukankan      html  css  js  c++  java
  • java.time Json序列化

    LocalDateTime Json序列化

    参考:

    https://www.cnblogs.com/carrychan/p/9883172.html

    controller

    @RestController
    public class TestLocalDateTimeJsonController {
        @GetMapping("/get")
        public LocalDateTimeJson get(){
            return new LocalDateTimeJson(LocalDateTime.now());
        }
    }
    

    方法一

    @Data
    public class LocalDateTimeJson {
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
        private LocalDateTime dateTime;
    
        public LocalDateTimeJson(LocalDateTime dateTime) {
            this.dateTime = dateTime;
        }
    }
    

    方法二

    推荐使用

    配置类

    package com.chz.servicebase.config;
    
    import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
    import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    /**
     * 对LocalDateTime生效, Date 通过yml配置文件配置
     * 不会影响数据库中的datetime转换类型(mybatis自动转换),只会对数据转换为Json类型产生影响
     */
    @Configuration
    public class JacksonConfig {
        @Value("${spring.jackson.date-format}")
        private String pattern;
        @Value("${spring.jackson.time-zone}")
        private String timeZone;
    
        //    @Bean
        public LocalDateTimeSerializer serializer() {
            return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
        }
    
        public LocalDateTimeDeserializer deserializer() {
            return new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(pattern));
        }
    
        @Bean
        public Jackson2ObjectMapperBuilderCustomizer builderCustomizer() {
            return mapperBuilder -> {
                //同理LocalDate, LocalTime
                //添加序列化LocalDateTime
                mapperBuilder.serializerByType(LocalDateTime.class, serializer());
                //添加反序列化LocalDateTime
                mapperBuilder.deserializerByType(LocalDateTime.class, deserializer());
                mapperBuilder.timeZone(timeZone);
            };
        }
    }
    
    

    yaml

    spring:
      jackson:
        date-format: yyyy-MM-dd HH:mm:ss
        time-zone: GMT+8
    
  • 相关阅读:
    [导入]Interesting Finds: 2007.12.17
    [导入]Interesting Finds: 2007.12.15
    [导入]Interesting Finds: 2007.12.13
    Interesting Finds: 2007.12.22
    吾生也有涯,而知也无涯。
    Hello world
    学习了clipboard复制剪切插件的使用
    在博客园学习成长
    命名空间概述
    Linux vi/vim
  • 原文地址:https://www.cnblogs.com/kikochz/p/12930857.html
Copyright © 2011-2022 走看看