1. 什麼是 JSON?從基礎理解資料格式
JSON 的定義與基本概念
JSON 是一種基於文字的格式,主要使用「鍵值對」(key-value pair)來表示資料。這種結構非常適合用於程式之間的資料交換。
例如,您可以使用 JSON 來表示使用者資訊,如下所示:
{
"name": "佐藤",
"age": 30,
"email": "sato@example.com"
}
在這個範例中,「鍵」(key)是「name」、「age」、「email」,並為每個鍵設定了對應的「值」(value)。這使得 JSON 既易於人類閱讀理解,也便於電腦處理,效率很高。
JSON 的特色與優點
- 輕巧且簡單
- JSON 是一種緊湊的格式,不包含不必要的資訊,因此在通訊或儲存資料時非常有效率。
- 可讀性高
- 與 XML 或二進位格式相比,JSON 在視覺上更容易理解,也更容易進行偵錯和修改。
- 不依賴程式語言
- JSON 受到包括 JavaScript 在內的許多程式語言支援,因此具有高度的相容性,可用於廣泛的用途。
- 與物件導向程式設計相容性高
- JSON 是基於物件設計的,因此與物件導向程式設計自然相容。
JSON 普及的背景
JSON 最初是基於 JavaScript 的物件語法,因此在 **Web 應用程式開發中迅速普及,成為標準格式**。
特別是在與 REST API 進行資料交換時,由於其簡單性和高度相容性而被廣泛採用。與 XML 相比,JSON 的描述量較少,解析速度也更快,因此與行動應用程式和雲端服務的契合度很高。
JSON 的主要用途
- API 回應與請求
- 作為 Web 服務之間交換資料的格式,被廣泛運用。例如,天氣資訊 API 通常以 JSON 格式接收資料。
- 設定檔
- JSON 被用作儲存應用程式設定的格式。廣泛應用於設定檔(config.json)等。
- 資料儲存與資料庫
- 在 NoSQL 資料庫(例如:MongoDB)中,基於 JSON 的格式被用作資料模型。
- 資料分析與日誌管理
- 也應用於資料分析和錯誤日誌記錄,JSON 的結構使得解析更容易。
總結
JSON 作為一種 **輕巧且簡單的資料交換格式**,被程式語言、資料庫、API 等許多系統標準採用。由於其高可讀性和靈活性,是從初學者到進階使用者都能廣泛使用的工具。
下一節將更詳細地解釋 JSON 的基本語法,並結合實際程式碼範例來加深理解。

2. JSON 的基本語法與特色
JSON 的基本結構
JSON 以 **鍵值對** 作為基本元素構成。如下所示,使用大括號 {}
來描述資料。
範例:表示使用者資訊的 JSON
{
"name": "佐藤",
"age": 30,
"email": "sato@example.com",
"isMember": true
}
- **鍵**(例如:”name”、”age”)必須使用字串表示。
- **值** 可以使用字串、數值、布林值、null、陣列、物件的任一種。
資料類型及其範例
- 字串(String)
- 必須使用雙引號(””)括起來。
- 範例:
"title": "JSON 入門"
- 數值(Number)
- 可以使用整數或浮點數。
- 範例:
"price": 1999, "discount": 9.5
- 布林值(Boolean)
- 指定 true 或 false。
- 範例:
"isAvailable": true
- null
- 表示值不存在。
- 範例:
"nickname": null
- 陣列(Array)
- 使用中括號
[]
表示資料的列表。 - 範例:
"tags": ["JSON", "資料格式", "程式設計"]
- 物件(Object)
- 可以使用巢狀結構進一步定義物件。
- 範例:
"address": { "city": "東京", "zip": "100-0001" }
撰寫 JSON 時的注意事項
- 務必使用雙引號
- 鍵和字串必須使用雙引號(”)括起來。單引號會導致錯誤。
- 禁止在末尾使用逗號
- 在陣列或物件的最後一個元素後加上逗號會導致錯誤。
- 錯誤範例:
{ "name": "佐藤", "age": 30, }
- 不能撰寫註解
- JSON 不支援註解。若要在文件中添加說明,需要另外準備 README 檔案等。
總結
JSON 是一種可以使用鍵值對、陣列、物件來有效管理資料的格式。其簡單的結構和靈活性使其在資料交換和儲存等場景中被廣泛使用。
3. JSON 的具體使用範例
透過 API 進行資料交換
JSON 被廣泛用作 Web 應用程式或行動應用程式與伺服器之間進行資料交換的格式。特別是在 REST API 中,它被標準採用作為請求或回應的資料格式。
範例:取得使用者資訊的 API
- 請求 (Request)
GET /users/1 HTTP/1.1
Host: example.com
Accept: application/json
- 回應 (Response)
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"name": "佐藤",
"email": "sato@example.com",
"status": "active"
}
作為設定檔使用
JSON 也被用作應用程式的設定檔。
範例:設定檔 (config.json)
{
"server": {
"host": "localhost",
"port": 3000
},
"database": {
"user": "admin",
"password": "password123",
"dbname": "exampledb"
},
"logging": {
"level": "info",
"enabled": true
}
}
前端與後端之間的資料通訊
JSON 經常使用於 AJAX 或 Fetch API 的非同步通訊。
範例:使用 Fetch API 取得資料 (JavaScript)
fetch('https://api.example.com/users/1')
.then(response => response.json())
.then(data => {
console.log(data.name); // 顯示 "佐藤"
})
.catch(error => console.error('Error:', error));
在資料庫中的使用 (NoSQL)
NoSQL 資料庫以 JSON 格式儲存和管理資料。
範例:在 MongoDB 中儲存資料
{
"_id": ObjectId("507f1f77bcf86cd799439011"),
"name": "田中",
"age": 28,
"skills": ["JavaScript", "Python"]
}
總結
JSON 在 API 通訊、設定檔、資料庫、日誌管理等許多場景中是不可或缺的格式。

4. JSON 的操作與處理方法
使用 JavaScript 解析與生成 JSON
解析 JSON (Parse)
const jsonString = '{"name": "田中", "age": 25, "isMember": true}';
const user = JSON.parse(jsonString);
console.log(user.name); // 輸出: 田中
生成 JSON (Serialize)
const user = {
name: "田中",
age: 25,
isMember: true
};
const jsonString = JSON.stringify(user, null, 2);
console.log(jsonString);
在其他程式語言中操作 JSON
Python 範例
import json
json_str = '{"name": "佐藤", "age": 28}'
data = json.loads(json_str)
print(data['name']) # 輸出: 佐藤
錯誤處理
JavaScript 範例
try {
const data = JSON.parse('{name: "佐藤"}'); // 發生錯誤
} catch (error) {
console.error('JSON 解析錯誤:', error.message);
}
總結
JSON 可以輕鬆地進行解析和生成,因此能夠有效率地管理資料。
5. JSON 的應用與最新技術
使用 JSON Schema 進行資料驗證
JSON Schema 是定義和驗證 JSON 資料結構與格式的規範。
範例:使用者資訊的 Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "使用者資訊",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 0
},
"email": {
"type": "string",
"format": "email"
}
},
"required": ["name", "email"]
}
使用 JSON-LD 進行結構化資料
JSON-LD 提供針對 SEO 優化和搜尋引擎的語義化資料。
範例:公司資訊的結構化資料
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "範例股份有限公司",
"url": "https://www.example.com",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+81-90-1234-5678",
"contactType": "customer service"
}
}
最新規範與擴展技術
JSON5 範例
{
name: "田中", // 可以有註解
age: 30,
skills: ["JavaScript", "Python",], // 可以有尾隨逗號
}
總結
JSON 可以廣泛應用於資料驗證和 SEO 策略等。

6. JSON 與其他資料格式的比較
JSON 與 XML 的比較
範例:JSON
{
"user": {
"name": "佐藤",
"age": 30
}
}
範例:XML
<user>
<name>佐藤</name>
<age>30</age>
</user>
比較表
特色 | JSON | XML |
---|---|---|
語法簡潔性 | 簡單且可讀性高 | 標籤多且冗長 |
資料類型支援 | 支援數值、布林值等 | 皆視為字串 |
解析速度 | 快速 | 相對較慢 |
用途 | 適用於 API 與設定檔 | 適用於文件管理 |
JSON 與 YAML 的比較
範例:JSON
{
"name": "佐藤",
"age": 30
}
範例:YAML
name: 佐藤
age: 30
比較表
特色 | JSON | YAML |
---|---|---|
語法靈活性 | 嚴謹且簡單 | 接近自然語言,易讀 |
註解支援 | 不支援 | 支援 (使用 #) |
用途 | 適用於程式或 API 通訊 | 適用於設定檔管理 |
總結
JSON 在簡單性和速度方面具有優勢,最適合用於資料管理和 API 通訊。
7. JSON 的未來與未來趨勢
JSON 的標準化與規範演進
JSON 已在 RFC 8259 中標準化,並以 UTF-8 作為基本編碼。
JSON5 的出現
新增了更靈活的語法和註解支援等擴展規範。
JSON5 範例
{
name: "田中",
age: 25, // 可以有註解
}
JSON-LD 與語義網
支援 SEO 強化和資料語義化。提供搜尋引擎可讀的結構化資料。
未來的挑戰
- 加速: 轉換為 BSON 等二進位格式。
- 強化安全性: 發展跳脫字元處理和驗證工具。
總結
JSON 正與最新技術結合持續演進,扮演著資料管理的核心角色。
8. 總結與額外資源
文章重點總結
- JSON 作為簡單高效的資料交換格式被廣泛採用。
- 應用範圍廣泛,包括 API 通訊、設定檔、SEO 策略等。
- 正與最新技術結合並持續發展安全措施。
額外資源介紹
- JSON 官方網站 – JSON 規範與基本規則。
- JSONLint – JSON 語法檢查工具。
- MDN Web Docs – 關於 JavaScript 中 JSON 的說明。
未來學習與實踐建議
- 在小型專案中活用 JSON。
- 學習 JSON Schema 或 JSON-LD 等應用技術。
- 在社群或論壇中掌握最新趨勢。
總結
JSON 是一種能有效率管理資料的格式,與最新技術結合後將擴展更多可能性。

FAQ: JSON 的常見問題
1. 什麼是 JSON?
A: JSON (JavaScript Object Notation) 是一種基於文字的資料交換格式,用於簡單且有效率地表示資料。
- 它由鍵值對組成,可以清晰地表達資料的結構。
- JSON 輕巧且支援多種程式語言,主要用於 API 通訊和設定檔。
2. JSON 主要應用於哪些地方?
A: JSON 主要用於以下用途:
- API 通訊: 用於客戶端與伺服器之間的資料傳輸。
- 設定檔: 儲存應用程式或工具的設定資訊。
- 資料庫: 在 NoSQL 資料庫(例如:MongoDB)中管理資料。
- 日誌管理: 記錄錯誤日誌和偵錯資訊。
- 結構化資料: 使用 JSON-LD 格式進行 SEO 強化。
3. JSON 有哪些資料類型?
A: JSON 支援以下 6 種資料類型:
- 字串 (String):
"name": "佐藤"
- 數值 (Number):
"age": 30
- 布林值 (Boolean):
"isMember": true
- null:
"nickname": null
- 陣列 (Array):
"skills": ["JavaScript", "Python"]
- 物件 (Object):
"address": {"city": "東京", "zip": "100-0001"}
4. JSON 和 XML 有什麼不同?
A: JSON 和 XML 的區別如下:
特色 | JSON | XML |
---|---|---|
語法簡潔性 | 簡單且可讀性高 | 標籤多且冗長 |
資料類型支援 | 原生支援數值、陣列等 | 皆視為字串處理 |
解析速度 | 快速 | 相對較慢 |
用途 | 適用於資料傳輸與設定檔 | 適用於文件與結構化資料管理 |
5. JSON 和 YAML 的區別是什麼?
A: YAML 是一種更易於人類讀寫的資料格式,與 JSON 的區別如下:
特色 | JSON | YAML |
---|---|---|
語法形式 | 嚴謹且簡單 | 靈活且接近自然語言 |
註解支援 | 不支援註解 | 支援註解 (使用 #) |
用途 | 適用於程式處理與資料通訊 | 適用於設定檔與組態管理 |
6. JSON 可以在哪些程式語言中使用?
A: JSON 支援以下多種程式語言:
- JavaScript: 使用標準函數
JSON.parse()
和JSON.stringify()
。 - Python: 使用
json
模組進行解析和生成。 - PHP: 使用
json_decode()
和json_encode()
函數。 - Java: 使用
Jackson
或Gson
函式庫。
7. 我可以在 JSON 中添加註解嗎?
A: 標準的 JSON 規範不支援註解。然而,若用於設定檔,可以使用以下替代方案:
- 添加專門的註解鍵:
{
"_comment": "這個設定用於偵錯",
"debug": true
}
- 使用 JSON5: JSON5 支援註解。
8. 如何處理 JSON 錯誤?
A: 以下是處理 JSON 處理時可能發生錯誤的範例:
JavaScript 範例:
try {
const data = JSON.parse('{name: "佐藤"}'); // 發生錯誤
} catch (error) {
console.error('JSON 解析錯誤:', error.message);
}
9. 我可以將 JSON 轉換為二進位格式嗎?
A: 是的,可以。有一種專門為 JSON 優化的二進位格式叫做 **BSON (Binary JSON)**。
- 主要用於 MongoDB 等 NoSQL 資料庫。
- 特點是資料處理速度快且效率高。
10. JSON 的最新趨勢或技術有哪些?
A: JSON 的最新技術包括:
- JSON-LD: 描述結構化資料,用於 SEO 優化。
- JSON5: 支援更靈活的語法和註解的擴展規範。
- GraphQL: 一種 API 設計,可以更靈活地以 JSON 格式獲取資料。
- 無伺服器架構: 在 AWS Lambda 或 Google Cloud Functions 等服務中用於事件驅動的資料處理。
總結
本 FAQ 涵蓋了從 JSON 的基本問題到應用技術。JSON 簡單易用,但也需要在語法錯誤和擴展規範方面多加注意。請參考本文和 FAQ,掌握 JSON 的基礎和應用,並在實際專案中加以運用。