JSON 是什麼

JSON(全名為 JavaScript Object Notation)是一種輕量級的資料交換格式

雖然它的名字裡有 JavaScript,但它現在已經是一種「語言無關」的標準,幾乎所有的程式語言(如 Python, Java, PHP, C++)都支援它。你可以把它想像成電腦世界裡的「通用語言」,專門用來在伺服器和網頁、或者是不同應用程式之間傳遞訊息。


1. 為什麼要用 JSON?

在 JSON 出現之前,大家常用 XML。但 JSON 更有優勢:

  • 易於閱讀:人類看得懂,結構很像我們平常做的清單。

  • 格式精簡:比起 XML,JSON 去掉了冗餘的標籤,傳輸速度更快。

  • 解析方便:程式碼處理起來非常簡單,特別是在開發網頁時。


2. JSON 的基本結構

JSON 的格式主要由大括號 {}中括號 [] 以及 鍵值對(Key-Value pairs) 組成。

核心規則:

  1. 資料在「鍵值對」中:用冒號 : 分隔,例如 "name": "小明"

  2. 資料間用「逗號」分隔:例如 "age": 25, "city": "台北"

  3. 物件(Object)放在 {}:代表一個完整的實體。

  4. 陣列(Array)放在 []:代表一組資料清單。

  5. 字串必須用「雙引號 ""」包圍


3. 一個實際的 JSON 範例

假設我們要描述一位使用者,JSON 會長這樣:

JSON
{
  "name": "王小明",
  "age": 28,
  "is_subscriber": true,
  "hobbies": ["健身", "攝影", "程式語言"],
  "address": {
    "city": "台北市",
    "zip_code": 100
  }
}

這裡面包含了幾種資料型態:

  • String (字串):如 "王小明"

  • Number (數字):如 28

  • Boolean (布林值)truefalse

  • Array (陣列):如 hobbies 後面的列表。

  • Object (物件):如 address 裡面又包了一個小地圖。

  • Null:代表空值。


4. 常見的應用場景

  • API 串接:當你打開天氣 App 時,手機會向伺服器請求資料,伺服器回傳的就是 JSON 格式的天氣資訊。

  • 設定檔:很多軟體(例如 VS Code)會用 .json 檔案來儲存使用者的設定偏好。

  • 資料庫儲存:像是 MongoDB 這種 NoSQL 資料庫,直接就是以類似 JSON 的格式來儲存資料。


小撇步:JSON 的格式非常嚴格,多一個逗號或少一個引號都會報錯。如果你在寫 JSON 時不確定對不對,可以搜尋「JSON Validator」線上工具幫你檢查!

假設我們有一段描述咖啡廳菜單的文字:

「這家店叫『雲端咖啡』,在台北。有一款拿鐵賣 150 元,還有精品手沖賣 200 元。店內提供 Wi-Fi,但不可帶寵物。」

轉化成 JSON 的樣子:

我們可以用「物件」包住店名和地點,用「陣列」列出飲品,用「布林值」表示服務。

JSON
{
  "store_name": "雲端咖啡",
  "location": "台北",
  "menu": [
    {
      "item": "拿鐵",
      "price": 150
    },
    {
      "item": "精品手沖",
      "price": 200
    }
  ],
  "services": {
    "has_wifi": true,
    "allow_pets": false
  }
}

如何在程式中使用?(以 Python 為例)

在 Python 中,JSON 對應的是「字典 (Dictionary)」。我們通常會用內建的 json 模組來處理:

Python
import json

# 1. 這是從網路上抓到的 JSON 字串
json_data = '{"name": "小明", "age": 20}'

# 2. 解析 (Parse):把字串轉成 Python 可以操作的物件
data = json.loads(json_data)
print(data["name"])  # 輸出: 小明

# 3. 序列化 (Serialize):把 Python 物件轉回 JSON 字串
new_json = json.dumps(data, ensure_ascii=False)

常見的小陷阱(注意!)

  1. 引號限制:JSON 的鍵(Key)和字串值(Value)必須使用雙引號 ",不能用單引號 '

  2. 最後一個逗號:陣列或物件的最後一項後面不能有逗號(這點跟 Python 的 List 不太一樣)。

  3. 布林值小寫:JSON 裡面是 true / false,不是 Python 的 True / False

 

發佈留言

0 留言