賀!此系列文榮獲 2023 iThome 鐵人賽《優選》獎項,正在規劃出書中,感謝大家的支持🙏,同名課程「Java 工程師必備!Spring Boot 零基礎入門」也已在 Hahow 平台上架
哈囉大家好,我是古古
在上一篇文章中,我們有介紹了要如何使用 @RequestMapping
,將 url 路徑對應到 Spring Boot 的程式上
那麼接著這篇文章,我們會來介紹要如何透過 Json,來結構化的呈現返回的數據
在上一篇文章中,我們最後有加了一個新的 product 方法,並且為他添加對應的 url 路徑 /product
,程式如下:
但是目前在這個 product 方法的返回值中,是使用「一個字串」來表達「第一個是蘋果、第二個是橘子」的資訊,而這樣子的表達方式,其實是非常人類語言的,對於電腦的程式語言來說很難辨別
因此就有人發明了一個格式,能夠更有效率的去呈現數據,而這個格式就是 json!
Json 是一種格式,用途是更簡單、更直覺的去呈現數據,讓我們易於讀寫,因此當我們使用了 json 之後,就可以在傳遞數據時更有效率,就不用像上面一樣直接用一串文字,複雜的去形容數據了
Json 格式是一個簡單、但是使用頻率非常非常非常高的一項技術,基本上只要涉及到前後端的溝通,有很大一部分都是使用 Json 格式來傳遞數據的,因此 Json 格式可以說是非常重要的一項技術
舉例來說,當我們使用了 Json 之後,就可以將「我的學號是 123,名字是 Judy」,改成像是下面的 Json 格式來呈現了!
{
"id": 123,
"name": "Judy"
}
在 Json 格式中,可以由一組大括號 {}
來表示一個 object,譬如說當我們寫上下面這一段 Json 格式的程式時,就表示我們 new 出了一個 object
{
//....
}
寫好一對大括號之後,在大括號 {}
裡面,我們是可以去定義「key 和 value 的配對」,這個 key 的地位就等同於是去宣告一個 Java 中的變數,而 value 就是去設定這個變數的值
舉例來說的話,假設我們在大括號裡面加上一行程式 "id": 123
,就表示我們去創建了一組 key-value 的配對,其中 key 就是 id
,表示我們宣告了一個變數他的名字叫做 id
,然後這個 id
的值,就是冒號右邊的 123
所以在這行程式 "id": 123
,他的意思就是「有一個變數 id,他的值為 123」,而這個其實就是一對 key-value,其中 key 為 id
,並且 value
為 123
{
"id": 123
}
所以在 Json 裡面,是可以透過 key-value 的配對格式寫法,不斷的在下面去新增許多組 key-value 出來的
延續上面的例子,我們現在已經有一組 key-value "id": 123
了,去表達「我的 id 的值為 123」的資訊
如果這時候我們想要再新增一組 key-value,用來表達「我的名字為 Judy」的話,那我們就可以 先在最後面加上一個逗點,然後換行,接著輸入 "name": "Judy"
,在下面去創建第二組 key-value 的配對
{
"id": 123,
"name": "Judy"
}
所以在上面這個寫法中,"name": "Judy"
這對 key-value,他們的 key 就是 name
,表示我們創建了一個變數叫做 name
,然後這個 name
變數的值就是 Judy
這樣,因此我們就可以用這一行程式,去表達「我的名字為 Judy」的意義
因此當我們這樣寫之後,在這整個 json 裡面,就表達了兩個資訊,分別是「我的 id 為 123」以及「我的名字為 Judy」了!
所以透過 json 格式的寫法,就可以用更簡單的結構去傳遞數據,因此就可以簡化開發,進而提升前後端溝通的效率了!
在使用 Json 時,有一個很重要的注意事項,就是**「在 Json 中的所有 key,都必須要加上雙引號 " "
來框住才可以」**
舉上面所寫的 json 格式來說的話:
{
"id": 123,
"name": "Judy"
}
在 id
和 name
這兩個 key 的前後,我們都有去加上一對雙引號,把這個 key 給框起來,這個是在撰寫 Json 格式中,一定要注意的細節!
所以如果沒有正確的為 key 加上雙引號的話,就會是一個錯誤的 Json 格式,因此大家在撰寫的時候,建議要多加小心這個部分
在 Json 的格式中,我們是可以透過 key-value 的配對,去創建一組組的變數和他對應的值的,而在這些值中,Json 支援以下幾種類型,分別是:
"id": 123
"score": 1.111
"name": "Hello"
"option": true
"list": [1, 2, 3]
因此大家在使用上,就可以根據不同的需求,為 key 去設定不同類型的 value 了
在 Json 中,value 除了可以使用基本類型的整數、浮點數、字串....等等之外,也是可以設定成是一個 List 的
只需要在 value 的地方先寫上一對中括號 []
,就表示創建了一個 list 出來,因此我們就可以在這個 list 裡面,去填上我們想要放的內容了,這部分的概念,就和 Java 中的 List 是一模一樣的(因此大家只要把它當成 Java 中的 list 來想就好)
舉例來說,當我們寫上下面這個 Json 格式時:
{
"appleList": ["apple1", "apple2", "apple3"]
}
就表示我們去定義了一個變數 key 叫做 appleList
,而他裡面所儲存的值,就會是一個 List,並且在這個 List 裡面,就會存放了 3 個值,分別是 apple1、apple2、以及 apple3 了
了解了 Json 的格式怎麼使用之後,我們就可以回到最一開始的問題,即是把 MyController 中所返回的「第一個是蘋果、第二個是橘子」的字串,改成是使用 Json 的格式來傳遞
因此我們就可以改寫成是下面這個樣子,就可以使用 Json 的格式,來表達「第一個是蘋果、第二個是橘子」的意義了!
{
"productList": ["蘋果", "橘子"]
}
這篇文章先介紹了什麼是 Json,並且也介紹了 Json 格式的 key-value 的寫法,以及 Json 的 value 所支援的值
了解要怎麼使用 Json 格式來改寫返回值之後,那麼下一篇文章,我們就可以回到 Spring Boot 程式,來改寫一下 MyController,將 MyController 所回傳的值改成是 Json 格式了,那我們就下一篇文章見啦!