You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3默认恢复JSON格式:移除XML依赖后仍返回XML

问题解决:恢复Spring Boot接口默认JSON返回格式

一、先确认Jackson XML依赖是否彻底移除

你的问题大概率是依赖没清干净——可能是其他依赖间接引入了jackson-dataformat-xml,导致XML消息转换器还在生效。

  • 执行命令 mvn dependency:tree,查看完整依赖树,搜索jackson-dataformat-xml,确认是否被其他依赖(比如某些starter)间接引入。
  • 如果发现间接依赖,直接在pom.xml里对应的依赖下添加排除规则:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 再执行 mvn clean install -U,强制更新依赖并重新构建。

二、强制指定默认返回格式为JSON

如果依赖确实清理干净但还是返回XML,直接通过配置锁死默认响应类型:

全局配置(推荐)

在application.properties里添加:

spring.mvc.contentnegotiation.default-content-type=application/json
spring.mvc.contentnegotiation.favor-path-extension=false

或者用application.yml格式:

spring:
  mvc:
    contentnegotiation:
      default-content-type: application/json
      favor-path-extension: false

这个配置会让接口默认返回JSON,同时关闭路径后缀(比如.xml)的格式匹配优先级。

局部配置(控制器/方法级别)

如果只想针对某个控制器生效,直接在类上指定produces:

import org.springframework.http.MediaType;
// ... 其他导入

@RestController
@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public class UserResource {
    // 你的接口代码保持不变
}

也可以单独给某个接口方法添加:

@GetMapping(value = "/users", produces = MediaType.APPLICATION_JSON_VALUE)
public List<User> RetrieveUsers() {
    return service.findAll();
}

三、检查客户端请求头

有时候是客户端请求时带了Accept: application/xml的请求头,服务器会优先返回XML。你可以用浏览器开发者工具、Postman等工具查看请求头,如果是这个原因,要么修改客户端的请求头,要么通过上面的全局配置强制忽略Accept头的优先级。

内容的提问来源于stack exchange,提问作者cynthsbeath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:08:09