SpringBoot与Gson
SpringBoot与Gson
介绍
在Spring Boot中,与Gson整合也是相对简单的。下面是整合Gson的一般步骤:
- 添加Gson依赖:在项目的构建文件(如Maven的pom.xml)中添加Gson的依赖。可以通过以下方式添加最新版本的Gson依赖:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version>
</dependency>
- 配置Gson为默认的JSON解析器:在Spring Boot的配置类(通常是Application类)中,通过覆盖
configureMessageConverters
方法或者添加HttpMessageConverters
bean来配置Gson为默认的JSON解析器。示例代码如下:
@Configuration
public class GsonConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
Gson gson = new Gson();
GsonHttpMessageConverter converter = new GsonHttpMessageConverter(gson);
converters.add(converter);
}
}
- 配置Gson的特性:可以根据需要配置Gson的特性,例如日期格式化、空值处理等。可以通过创建
GsonBuilder
实例并设置相应的特性来实现。示例代码如下:
@Configuration
public class GsonConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss");
// 其他配置...
Gson gson = gsonBuilder.create();
GsonHttpMessageConverter converter = new GsonHttpMessageConverter(gson);
converters.add(converter);
}
}
通过以上步骤,就可以将Gson与Spring Boot整合起来,使其成为Spring Boot应用程序的默认JSON解析器。此后,Spring Boot将使用Gson来处理请求和响应中的JSON数据。
需要注意的是,在整合Gson时,如果使用了Jackson作为默认的JSON解析器,可能会导致冲突。因此,如果要使用Gson,通常需要将Jackson相关的依赖从项目中移除或禁用Jackson相关的自动配置。
Demo
项目结构
源码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class A04SpringBootGsonApplication {
public static void main(String[] args) {
SpringApplication.run(A04SpringBootGsonApplication.class, args);
}
}
public class Website {
private int id;
private String url;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class WebsiteController {
@GetMapping("/website")
public Website website(){
Website website=new Website();
website.setId(1);
website.setName("supremepole");
website.setUrl("https://cs.supremepole.com");
return website;
}
}
server.port=8081