springboot 自定義類型轉換 Gson和fastjson

springboot 自定義類型轉換

Gson實現

@ConditionalOnMissingBean註解:啓動時檢測有沒有gsonHttpMessageConverter 的bean

如果有,默認類型轉換器將不再生效

  1. 引入Maven
<!-- 使用Google的gson -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <exclusions>
      <exclusion>
         <groupId>com.fasterxml.core</groupId>
         <artifactId>jackson-databind</artifactId>
      </exclusion>
   </exclusions>
</dependency>

<dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
</dependency>
  1. 編寫配置類
  @Configuration
  public class GsonConfig {
  
      @Bean
      GsonHttpMessageConverter gsonHttpMessageConverter(){
          GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
          GsonBuilder builder = new GsonBuilder();
          builder.setDateFormat("yyyy-MM-dd");
          builder.excludeFieldsWithModifiers(Modifier.PROTECTED);
          Gson gson = builder.create();
          converter.setGson(gson);
          return converter;
      }
  
  }

fastjson實現

  1. 引入Maven
<!-- 使用阿里是fastjson -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <exclusions>
      <exclusion>
         <groupId>com.fasterxml.core</groupId>
         <artifactId>jackson-databind</artifactId>
      </exclusion>
   </exclusions>
</dependency>

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.62</version>
</dependency>
  1. 編寫配置類
@Configuration
public class MyFastjsonConfig {

    @Bean
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter(){
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        FastJsonConfig config = new FastJsonConfig();
        config.setDateFormat("yyyy-MM-dd");
        config.setCharset(Charset.forName("UTF-8"));
        config.setSerializerFeatures(
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.PrettyFormat,
                SerializerFeature.WriteNullListAsEmpty,
                SerializerFeature.WriteNullStringAsEmpty
        );
        converter.setFastJsonConfig(config);
        return converter;
    }

}

中文亂碼解決

server:
  port: 80

spring:
  http:
    encoding:
      force-response: true
補充:fastjson實現方法二
  • 重寫WebMvcConfigurer類的configureMessageConverters方法
        //這裏是方法體,複製到重寫的configureMessageConverters方法中就行了
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        FastJsonConfig config = new FastJsonConfig();
        config.setDateFormat("yyyy-MM-dd");
        config.setCharset(Charset.forName("UTF-8"));
        config.setSerializerFeatures(
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.PrettyFormat,
                SerializerFeature.WriteNullListAsEmpty,
                SerializerFeature.WriteNullStringAsEmpty
        );
        converter.setFastJsonConfig(config);
        converters.add(converter);
  • 將converter添加到convertersconverters.add(converter);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章