上手spring boot項目(四)之springboot如何返回json數據


在springboot整合thymeleaf中,經常會在HTML頁面中接收來自服務器的json數據,然后處理json數據並在頁面上渲染。那么如何在服務器中返回json類型的數據呢?

1.使用@ResponseBody注解

該注解用於將 Controller 的方法返回的對象,通過 HttpMessageConverter 接口轉換為指定格式的

數據如:json,xml 等,通過 Response 響應給客戶端

在controller的方法上增加@RespongBody

@RequestMapping("/findAll.do")
@ResponseBody
public List<SysCategory> findAll(){ //查詢分類信息,具體的service層方法略 List<SysCategory> categoryList = categoryService.findAll(); System.out.println(categoryList); return categoryList; } 

Java控制台打印出的結果如下:

 接下來是在前端接收服務器返回的json數據

 $.get("/category/findAll.do",{},function (data) {
            console.log(data);
},"json");

在頁面控制台打印出的結果如下:

 可以看到 服務器端的返回的確實是json類型的數據

2. 使用@RestController注解

@RestController是@ResponseBody和@Controller兩者的結合,使用這個注解后就無需再用那兩個注解。
@RestController
@RequestMapping("/category") public class CategoryController { @Autowired private CategoryService categoryService; @RequestMapping("/findAll.do") public List<SysCategory> findAll(){ List<SysCategory> categoryList = categoryService.findAll(); System.out.println(categoryList); return categoryList; } }

發送的請求和在controller層的業務邏輯和第一種方法一樣。

在頁面控制台打印出的結果如下:

3.使用response將數據寫回客戶端(不推薦)

String obj = "[SysCategory{id=1, name='JavaSe'}, SysCategory{id=2, name='JavaEE'}, SysCategory{id=3, name='前端'}, SysCategory{id=4, name='其他'}]"
ObjectMapper mapper = new ObjectMapper(); response.setContentType("application/json;charset=utf-8"); mapper.writeValue(response.getOutputStream(),obj);

在頁面控制台打印出的結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM