1. 程式人生 > >Spring Boot如何使用第三方json解析框架

Spring Boot如何使用第三方json解析框架

1. 在pom.xml檔案中,加入第三方json依賴jar包

這裡以使用fastjson為例,pom.xml內容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.lanhuigu</groupId>
  <artifactId>spring-boot-hello</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>spring-boot-hello</name>
  <url>http://maven.apache.org</url>
  
  
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- 配置jdk版本,預設為1.6 -->
    <java.version>1.8.0_66</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency> 
    <!-- spring boot引入相關web開發jar包,包括spring,spring mvc,spring boot,json框架等等 -->
    <dependency>
	  <groupId>org.springframework.boot</groupId>
	  <artifactId>spring-boot-starter-web</artifactId>
	  <!-- 這個地方不需要指定jar包版本,根據parent配置自動選擇 -->
	  <!-- <version>1.4.1.RELEASE</version> -->
	</dependency>
	
	<dependency>
	  <groupId>com.alibaba</groupId>
	  <artifactId>fastjson</artifactId>
	  <version>1.2.15</version>
	</dependency>
  </dependencies>
</project>


2. 修改啟動類

兩種方法程式碼例項:

package com.lanhuigu;

import java.util.List;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;

/**
 * Hello world!
 */
@SpringBootApplication
public class App extends WebMvcConfigurerAdapter{
    /* 
     * spring boot中如何使用fastjson框架,而不是使用預設jackson框架解析json資料 
     */  
    // ###########################方法一##########################  
    /* 
     * (1)啟動類繼承於WebMvcConfigurerAdapter 
     * (2)覆蓋方法configureMessageConverters 
     */  
      
//  @Override  
//  public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {  
//      super.configureMessageConverters(converters);  
//      /*  
//       * 1.需要先定義一個converters轉換訊息的物件  
//       * 2.新增fastjson的配置資訊,比如: 是否需要格式化返回的json資料  
//       * 3.在converter中新增配置資訊  
//       * 4.將converter新增到converters資訊中  
//       */  
//      // 1.需要先定義一個converters轉換訊息的物件  
//      FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();  
//      
//      // 2.新增fastjson的配置資訊,比如: 是否需要格式化返回的json資料  
//      FastJsonConfig fastJsonConfig = new FastJsonConfig();  
//      fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);  
//      
//      // 3.在converter中新增配置資訊  
//      fastConverter.setFastJsonConfig(fastJsonConfig);  
//      
//      // 4.將converter新增到converters資訊中  
//      converters.add(fastConverter);  
//  }  
    // ###########################方法二##########################  
    /* 
     * 注入bean:HttpMessageConverters 
     */  
    @Bean  
    public HttpMessageConverters fastJsonHttpMessageConverters() {  
        // 1.需要先定義一個converters轉換訊息的物件  
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();  
          
        // 2.新增fastjson的配置資訊,比如: 是否需要格式化返回的json資料  
        FastJsonConfig fastJsonConfig = new FastJsonConfig();  
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);  
          
        // 3.在converter中新增配置資訊  
        fastConverter.setFastJsonConfig(fastJsonConfig);  
          
        // 4.將converter賦值給HttpMessageConverter  
        HttpMessageConverter<?> converter = fastConverter;  
          
        // 5.返回HttpMessageConverters物件  
        return new HttpMessageConverters(converter);  
    }
    
    public static void main( String[] args ) {
        /*System.out.println( "Hello World!" );*/
        SpringApplication.run(App.class, args);
    }
}


通過啟動類中任意一種方法,均可以實現引入第三方json解析框架,替代掉spring boot預設的jackson解析框架。