首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

SpringMVC 返回 JSON 實戰:@ResponseBody + Jackson 一鍵搞定,告別手動轉換

     編輯:Java 綜合教學

SpringMVC 返回 JSON 實戰:@ResponseBody + Jackson 一鍵搞定,告別手動轉換

在 SpringMVC 中返回 JSON 數據,只需兩步:引入 Jackson 依賴 + 方法上加 @ResponseBody。框架自動將返回對象序列化為 JSON 寫入 HTTP 響應體,Content-Type 自動設置為 application/json;charset=UTF-8。

步驟 1:引入 Jackson 核心依賴 (Maven)

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = "/info", method = RequestMethod.GET)
    @ResponseBody  // 關鍵:直接將返回對象序列化為 JSON 寫入 Response Body
    public User getUserInfo(@RequestParam("id") Long id) {
        User user = userService.findById(id);
        return user; // 自動轉 JSON:{"id":1,"name":"張三","age":25}
    }

    @RequestMapping(value = "/list", method = RequestMethod.GET)
    @ResponseBody
    public List getUserList() {
        return userService.findAll(); // 自動轉 JSON 數組:[{"id":1,...},{"id":2,...}]
    }
}

SpringMVC @ResponseBody 返回 JSON 示意圖

進階:統一響應封裝 (Result/ResponseEntity)

 saveUser(@RequestBody User user) { // @RequestBody 反序列化請求體 JSON
    userService.save(user);
    return Result.ok(); // 返回 {"code":200,"msg":"成功","data":null}
}

常見問題排查

  • 406 Not Acceptable:缺少 Jackson 依賴,或 Accept 頭不匹配。確保 pom.xml 有 jackson-databind。
  • 中文亂碼:配置 MappingJackson2HttpMessageConverter 設置 charset=UTF-8,或全局 spring.http.encoding.charset=UTF-8 (Spring Boot)。
  • 日期格式不統一:配置 ObjectMapper 日期格式,或實體類字段加 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")。
  • 循環引用報錯:實體類雙向關聯加 @JsonIgnore / @JsonManagedReference + @JsonBackReference。

Spring Boot 時代的簡化

Spring Boot 默認包含 Jackson,默認開啟 @ResponseBody 語義(@RestController = @Controller + @ResponseBody),無需任何配置即可返回 JSON。


總結

SpringMVC 返回 JSON 核心就是 Jackson 依賴 + @ResponseBody。理解背後的 HttpMessageConverter 機制,能快速解決亂碼、日期格式、循環引用等實戰問題。Spring Boot 時代,更是開箱即用,專注業務邏輯即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved