相信大家做項目的時候,遇到最多的就是後端返回數據到前端了,一般我們返回JSON格式的數據,在步入正題之前,我們先講一下什麼是JSON?使用JSON有什麼好處?
JSON的定義
JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率。
解釋來自於百度百科,說簡單點。JSON就是一串字符串 只不過元素會使用特定的符號標註。
JSON的幾種常見格式
- 對象
{
"username": "清風一陣吹我心",
"password": "123456"
}
- 數組
[
"one",
"two",
"three"
]
- 對象數組
{
"student": [
"張三",
"李四",
"王五"
],
"teacher": [
"語文",
"數學",
"英語"
]
}
- 數組對象
[
{
"username": "張三",
"age": 18
},
{
"username": "李四",
"age": 20
}
]
- 複雜的格式
{
"msg": "查詢成功",
"code": 200,
"data": {
"provinces": [
{
"name": "重慶",
"cities": [
{
"name": "重慶市",
"district": [
"江北區",
"渝北區",
"萬州區",
"合川區"
]
}
]
},
{
"name": "北京",
"cities": [
{
"name": "北京市",
"district": [
"海淀區",
"昌平區",
"朝陽區",
"豐臺區"
]
}
]
}
]
}
}
使用JSON的好處
- 與XML相比,數據格式比較簡單, 易於讀寫
- 格式都是壓縮的, 佔用帶寬小
- 便於服務器端的解析,支持多種語言。包括C,C#,Java,JavaScript, Perl,php,Python,Ruby等。
JSON的知識,就講到這裏,下面我們講一下在springboot中怎麼返回JSON數據吧。
springboot對JSON的支持
相信大家在使用spring的時候,要想後端返回JSON 數據,還要加入相關jar包,例如:Jackson和FastJson,然後在spring的配置文件中配置解析器和轉換器。有些夥伴就在想,我就想返回一個JSON格式的數據,爲什麼這麼麻煩呢?那我告訴你,springboot完美的幫你解決了問題。
還是接着上節的知識講今天的內容,所以,項目就不重新搭了。如果有剛接觸的夥伴,可以看一下上面兩節的內容。
https://blog.csdn.net/qq_32101993/article/details/84582927 springboot入門程序搭建
將對象轉換成JSON
首先我們創建一個User對象
//這裏使用的是lombok工具,自動生成getter、setter方法
@Data
public class User {
private String username;
private String password;
private int age;
}
這裏我使用了lombok工具,如果有不明的,可以去看一下關於這個的相關知識,後續課程會詳細說明,這裏只是使用了它自動生成getter、setter等的方法。
然後創建一個控制層,編寫僞代碼。
@RestController
public class JsonController {
@GetMapping("/user")
public User selectOne() {
User user = new User();
user.setUsername("清風一陣吹我心");
user.setPassword("123456");
user.setAge(15);
return user;
}
}
然後訪問地址:http://localhost:8081/user ,看到下面結果。
將List集合轉換成JSON
同樣使用User類,只改變控制層的方法。
@GetMapping("/users")
public List<User> selectAll() {
List<User> list = new ArrayList<>();
User user;
for (int i = 0; i < 3; i++) {
user = new User();
user.setUsername("A" + i);
user.setPassword(i + "123");
user.setAge(i);
list.add(user);
}
return list;
}
然後訪問地址:http://localhost:8081/users ,看到下面結果。
返回自定義對象的JSON型式
首先,我們創建一個自定義對象。
@Data
public class Result<T> {
private String msg;
private Integer code;
private T data;
}
然後創建一個操作它的工具類
public class ResultBean {
public static Result success(String msg, Object object) {
Result result = new Result();
result.setCode(200);
result.setMsg(msg);
result.setData(object);
return result;
}
public static Result success(String msg) {
return success(msg, null);
}
public static Result fail(String msg,Integer code){
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
}
最後書寫控制層的代碼
@GetMapping("/select")
public Result<User> findOne(){
User user = new User();
user.setUsername("清風一陣吹我心");
user.setPassword("12345");
user.setAge(20);
return ResultBean.success("查詢成功",user);
}
然後訪問地址:http://localhost:8081/select ,看到下面結果。
推薦大家使用第三種方法,向前端返回數據。不然有的時候,你的方法返回一個對象,有時返回集合,這樣導致代碼可讀性差,不易維護。如果返回一個統一的格式,代碼就很清晰了。
好了,今天的分享就到這裏了,希望與你們一起進步。
如果您喜歡這篇文章呢,可以動一下你的小手,訪問一下博主的個人博客吧,裏面也有一些學習心得和大家分享。
博客地址:https://www.qfcwx.com/
“你爲什麼要那麼努力?” “ 因爲我喜歡的東西都很貴,我想去的地方都很遠,我愛的人超完美。”