1. 程式人生 > >上手spring boot專案(四)之springboot如何返回json資料

上手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);

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

&n