Spring Boot返回JSON的核心是:用@RestController注解、写好含getter的实体类、确保字段可序列化;默认集成Jackson自动转换,支持Null处理、统一Result封装及JSON/XML多格式响应。

Spring Boot 返回 JSON 非常简单,核心就三点:用对注解、写好实体类、确保字段可序列化。
用 @RestController 直接返回对象
这是最常用也最直接的方式。只要 Controller 类加上 @RestController,方法返回任意 Java 对象(如 User、List<Product>),Spring Boot 就会自动用 Jackson 把它转成 JSON 响应给前端。
- 不需要手动调用 JSON 工具类,也不用写
response.getWriter().write(...) - 底层已默认集成
jackson-databind,无需额外配置就能工作 - 如果返回 null,JSON 中对应字段就是
null;若想跳过 null 字段,可在实体类上加@JsonInclude(JsonInclude.Include.NON_NULL)
字段要能被 Jackson 读取
Jackson 默认靠 getter 方法提取字段值,所以实体类必须满足基本要求:
- 所有需要输出的字段,必须有 public 的 getter 方法(如
getName()) - 推荐使用 Lombok 的
@Data或@Getter/@Setter自动生成,避免手写遗漏 - 不要把接口类型(如
ReportHeader)直接当字段用——Jackson 不知道该实例化哪个实现类,会报HttpMessageNotWritableException;应改用具体实现类或 DTO
统一响应格式更规范
实际项目中,前端通常期望固定结构,比如:{"code":200,"message":"OK","data":{...}}。这时建议封装一个泛型结果类:
- 定义
Result<T>类,含code、message、data三个字段 - 搭配枚举
ResultCode管理状态码和提示语,避免硬编码 - Controller 中统一返回
Result.success(user),而不是裸对象,前后端协作更稳
按需支持多种格式(JSON / XML)
如果接口还要兼容 XML,只需引入 jackson-dataformat-xml 依赖,再在方法上指定 produces:
-
@GetMapping(path = "/user", produces = MediaType.APPLICATION_JSON_VALUE)→ 返回 JSON -
@GetMapping(path = "/user", produces = MediaType.APPLICATION_XML_VALUE)→ 返回 XML - 浏览器访问时,也可通过 Accept 请求头自动协商格式(需开启 content-negotiation)


















