• spring boot @ResponseBody转换JSON 时 Date 类型处理方法,Jackson和FastJson两种方式,springboot 2.0.9配置fastjson不生效官方解决办法


    spring boot @ResponseBody转换JSON 时 Date 类型处理方法 ,这里一共有两种不同解析方式(Jackson和FastJson两种方式,springboot我用的1.x的版本)

    第一种方式:默认的json处理是 jackson 也就是对configureMessageConverters 没做配置时

      mybatis数据查询返回的时间,是一串数字,如何转化成时间。两种方法,推荐第一种

      方法一:

      可以在apllication.property加入下面配置就可以

      #时间戳统一转换
      spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

      spring.jackson.time-zone=GMT+8

      方法二:

      @JsonFormat(timezone = "GMT+8", pattern = "yyyyMMddHHmmss")

      private Date createTime;

    第二种方式:当configureMessageConverters 配置为FasJson处理时;

      方法一:全局配置:    fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");

    @Configuration
    public class WebMvcConfig extends WebMvcConfigurerAdapter {
    
    @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            super.configureMessageConverters(converters);
    
            FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
    
            FastJsonConfig fastJsonConfig = new FastJsonConfig();
            fastJsonConfig.setSerializerFeatures(
                    SerializerFeature.WriteNullListAsEmpty,
                    SerializerFeature.WriteMapNullValue,
                    SerializerFeature.WriteNullStringAsEmpty
            );
    
           //此处是全局处理方式
            fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
    
            fastConverter.setFastJsonConfig(fastJsonConfig);
    
            List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();
            supportedMediaTypes.add(MediaType.ALL); // 全部格式
            fastConverter.setSupportedMediaTypes(supportedMediaTypes);
            converters.add(fastConverter);
        }    
    }
    

      

      方法二:在所需要的字段上配置(比较灵活的方式,根据不同需求转换):

      @JSONField(format="yyyyMMdd")

      private Date createTime;

    说明:这里如果字段和全局都配置了 ,最后是以全局转换

    重要补充:

    当springboot版本是2.0.9以上配置fastjson不生效解决如下:

    import com.alibaba.fastjson.serializer.SerializerFeature;
    import com.alibaba.fastjson.support.config.FastJsonConfig;
    import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
    import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.MediaType;
    import org.springframework.http.converter.StringHttpMessageConverter;
    
    import java.nio.charset.Charset;
    import java.util.ArrayList;
    import java.util.List;
    
    @Configuration
    public class MyConfiguration {
    
        @Bean
        public HttpMessageConverters customConverters() {
            FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
            // 创建配置类
            FastJsonConfig config = new FastJsonConfig();
            config.setSerializerFeatures(
                    SerializerFeature.WriteNullListAsEmpty,
                    SerializerFeature.WriteMapNullValue,
                    SerializerFeature.WriteNullStringAsEmpty
            );
    
            //此处是全局处理方式
            config.setDateFormat("yyyy-MM-dd HH:mm:ss");
            config.setCharset(Charset.forName("UTF-8"));
            fastConverter.setFastJsonConfig(config);
    
            List<MediaType> supportedMediaTypes = new ArrayList<>();
            supportedMediaTypes.add(MediaType.ALL);
            fastConverter.setSupportedMediaTypes(supportedMediaTypes);
            //支持text 转string
            StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
            return new HttpMessageConverters(fastConverter, stringHttpMessageConverter);
        }

     参考spring官网文档:https://docs.spring.io/spring-boot/docs/2.0.9.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-spring-mvc-message-converters

  • 相关阅读:
    C#事件和委托的区别
    已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10()随机1~10
    如何搭建github+hexo博客-转
    ngRouter和ui-router区别
    JS数组追加数组采用push.apply的坑(转)
    vue中关于computed的一点理解
    simplify the life ECMAScript 5(ES5)中bind方法简介
    github使用-知乎的某小姐的一篇文章
    Jade 模板引擎使用
    玩转Nodejs日志管理log4js(转)
  • 原文地址:https://www.cnblogs.com/liran123/p/9516573.html
Copyright © 2020-2023  润新知