Spring Boot(三):JSON數據交互

相信大家做項目的時候,遇到最多的就是後端返回數據到前端了,一般我們返回JSON格式的數據,在步入正題之前,我們先講一下什麼是JSON?使用JSON有什麼好處?

JSON的定義

JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率。

解釋來自於百度百科,說簡單點。JSON就是一串字符串 只不過元素會使用特定的符號標註。

JSON的幾種常見格式

  1. 對象
{
    "username": "清風一陣吹我心",
    "password": "123456"
}
  1. 數組
[
    "one",
    "two",
    "three"
]
  1. 對象數組
{
    "student": [
        "張三",
        "李四",
        "王五"
    ],
    "teacher": [
        "語文",
        "數學",
        "英語"
    ]
}
  1. 數組對象
[
    {
        "username": "張三",
        "age": 18
    },
    {
        "username": "李四",
        "age": 20
    }
]
  1. 複雜的格式
{
    "msg": "查詢成功",
    "code": 200,
    "data": {
        "provinces": [
            {
                "name": "重慶",
                "cities": [
                    {
                        "name": "重慶市",
                        "district": [
                            "江北區",
                            "渝北區",
                            "萬州區",
                            "合川區"
                        ]
                    }
                ]
            },
            {
                "name": "北京",
                "cities": [
                    {
                        "name": "北京市",
                        "district": [
                            "海淀區",
                            "昌平區",
                            "朝陽區",
                            "豐臺區"
                        ]
                    }
                ]
            }
        ]
    }
}

使用JSON的好處

  1. 與XML相比,數據格式比較簡單, 易於讀寫
  2. 格式都是壓縮的, 佔用帶寬小
  3. 便於服務器端的解析,支持多種語言。包括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/

“你爲什麼要那麼努力?” “ 因爲我喜歡的東西都很貴,我想去的地方都很遠,我愛的人超完美。”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章