JSON全名JavaScript Object Notation,是一種資料交換格式
簡單來說,JSON是一種用文字描述資料結構的方式,讓不同的系統能夠讀取、傳遞、儲存資料
雖然名稱裡有JavaScript,但它其實並不專屬於JS,幾乎所有語言(Python、PHP、C#、Go...)都能讀取 JSON
JSON 的主要用途是:
JSON的格式和JavaScript物件很像,但有幾個嚴格規定:
**1.使用雙引號 "
:**所有的鍵(key)與字串(string)都必須使用雙引號包起來
**2.不允許註解與尾逗號:**不能寫註解,也不能在最後一個項目後面多一個逗號
**3.資料型態有限:**JSON只接受以下幾種型態:
null
範例:
{
"name": "小明",
"age": 25,
"isStudent": false,
"skills": ["JavaScript", "HTML", "CSS"],
"address": {
"city": "Taipei",
"zip": "100"
}
}
這是一個標準的 JSON 物件
注意所有key都用雙引號包住,整體結構清楚、好讀,也方便電腦解析
在JavaScript裡,常常需要在物件(Object)和JSON 字串(String)之間互相轉換
這時可以使用內建的兩個方法:
JSON.stringify()
:把 JS 物件序列化成JSON字串(方便儲存或傳送)JSON.parse()
:把 JSON 字串還原JS物件(方便操作內容)範例:
//JS物件
const user = {
name: "小明",
age: 25,
isStudent: false
};
//物件 → JSON 字串
const jsonStr = JSON.stringify(user);
console.log(jsonStr);
// => '{"name":"小明","age":25,"isStudent":false}'
//JSON 字串 → 物件
const obj = JSON.parse(jsonStr);
console.log(obj.name);
// => 小明
常見錯誤
1.忘記用雙引號包住 key
{ name: "小明" } //錯誤
{ "name": "小明" } //正確
2.最後一個元素後面多了逗號
{
"a": 1,
"b": 2,
}
3.JSON不能放函式或undefined
JSON.stringify({ fn: () => {} }); // => "{}"
功能 | 方法 | 說明 |
---|---|---|
物件轉 JSON | JSON.stringify() |
把物件轉成文字 |
JSON 轉物件 | JSON.parse() |
把文字還原成物件 |