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

如何让Spring控制器返回JSON数组而非JSON对象?

解决Spring控制器返回List被包装为JSON对象的问题

常见解决方案

1. 确保控制器正确使用注解

如果你的控制器类用的是@Controller,需要在方法上额外加@ResponseBody注解,让Spring直接把返回的集合序列化为扁平JSON数组;更推荐直接用@RestController,它已经整合了@Controller和@ResponseBody的功能:

// 推荐写法
@RestController
public class StudentController {
    @GetMapping(value = "/students")
    public List<Student> getStudents() {
        List<Student> list = service.getStudents();
        return list;
    }
}

// 或者用@Controller配合@ResponseBody
@Controller
public class StudentController {
    @GetMapping(value = "/students")
    @ResponseBody
    public List<Student> getStudents() {
        List<Student> list = service.getStudents();
        return list;
    }
}

2. 禁用Jackson的根节点包装

如果项目配置了Jackson自动将集合包装为带根节点的JSON对象,可以通过配置关闭该功能:

  • 在application.properties中添加:
spring.jackson.serialization.wrap-root-value=false
  • 或者在application.yml中添加:
spring:
  jackson:
    serialization:
      wrap-root-value: false

3. 使用ResponseEntity明确返回响应体

直接返回ResponseEntity<List<Student>>,显式指定响应内容,避免被额外包装:

@GetMapping(value = "/students")
public ResponseEntity<List<Student>> getStudents() {
    List<Student> list = service.getStudents();
    return ResponseEntity.ok(list);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:15:31