• 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

  • 相关阅读:
    JS 字符串全部替换 ,replace (/ /g,'')
    C#中的延时加载Lazy(Of T)
    并发程序报错:ORA01007: variable not in select list(选择列表中没有变量) 以及相关动态指针写法
    【转】PLSQL中显式Cursor、隐式Cursor、动态Ref Cursor区别
    Shell 学习
    常用SQL和链接
    关于ra_customer_trx_lines_all 应收发票行
    translate和replace 的区别
    应收帐款汇总
    在Users里已经赋予了Responsibility,登陆以后无法看到新增加的Responsibility解决办法
  • 原文地址:https://www.cnblogs.com/liran123/p/9516573.html
Copyright © 2020-2023  润新知