EP.14 RE:從零開始的學習 JS 生活-第十四日之 JSON

前言

轉生第十四日,這一篇將會來介紹 JSON。

JSON

JSON 全名是 JavaScript Object Notation,中文即 JavaScript 物件表示法,從名子來看它看起來跟 JavaScript 很有關係,從維基百科以及 MDN 來看兩者確實是有點關係,但是其實 JSON 與 JavaScript 是屬於兩種東西,其概念上概念上 JSON 是以 JavaScript 物件實字語法為基礎所發明的:

1
2
3
4
5
var object = {
name: 'Ray',
status: true,
};
console.log(object);

所以當你再來看 JSON 時,就會覺得這兩者有幾分神似呢。

首先早期開發還沒有出現 JSON 的時,大多都是採用 XML 傳送資料,大概會像這樣:

1
2
3
4
<object>
<name>mary</name>
<status>true</status>
</object>

那麼當 XML 的資料越來越肥大時,就會變得很麻煩,因為檔案會變的很大,而且裡面會一推沒有必要的符號。

所以後來就有一位叫 道格拉斯·克羅克福特 的人,基於 JavaScript 的物件實字建立方式創造出了 JSON,畢竟如果繼續基於以前的做法,那麼當需要傳送的資料越來越多,那就會發生很非常嚴重的問題,也就是檔案會太大、太肥等問題,這樣子的下場就是使用者就必須花更多的時間 & 流量來下載資料,畢竟裡面有太多不需要的符號以及多餘且重複的符號,而這些都是影響使用者體驗的關鍵,所以道格拉斯·克羅克福特才會將 JSON 命名為 JavaScript Object Notation,那 JSON 的撰寫方式如下 ↓

1
2
3
4
[{
"name": "Ray",
"status": "true"
}];

而這也是我們目前前後端所使用的資料傳送格式,現在大多後端都已經改採用 JSON 格式往前端傳送。

那由於 JSON 並不是 JavaScript 的一部分,而且 JSON 是一個比較嚴格的檔案,但我們無法否認 JSON 的非常紅且好用,所以 JavaScript 提供了兩種語法可以將 JSON 格式轉換為 JavaScript 可讀取的格式以及將 JavaScript 轉換成 JSON 格式。

  • JSON.stringify() - 物件實字語法轉換成 JSON 格式
  • JSON.parse() - JSON 格式轉換成物件實字語法
1
2
3
4
5
var object = {
name: 'Ray',
status: true,
};
JSON.stringify(object); // 物件實字語法轉換成 JSON 格式

物件實字語法轉換成 JSON 格式

1
JSON.parse('{"name":"Ray","status":true}'); // JSON 格式轉換成物件實字語法

JSON 格式轉換成物件實字語法

結尾

下一篇的 RE:從零開始的學習 JS 生活-第十五日 將會介紹 AJAX。