JSON 是什麼?一篇看懂 API 資料交換格式,前端、自動化新手必學!

什麼是JSON

你在串接 API、設定 n8n/Zapier 流程,或是學習前端開發時,是不是常常看到一堆長得像程式碼、用大括號 {} 包起來的神秘文字?那就是 JSON!它看起來可能有點嚇人,但請相信我,它其實是現代網路世界中,應用程式之間溝通資料的「通用語言」,而且比你想像的要簡單得多。

把它想成是應用程式之間的「數位名片」。當你的 n8n 流程向 Google Sheets 的 API 索取資料時,Google Sheets 並不是回傳一個 Excel 檔案,而是回傳一段格式化的純文字,這段文字就是 JSON。因為格式統一,所以 n8n 能毫不費力地讀懂這張「名片」上的所有資訊,並進行下一步的自動化操作。

這篇文章就是你的 JSON 完全入門指南。我會用最白話的比喻,帶你從零開始,搞懂 JSON 的結構、語法和用途。讀完之後,你將不再害怕那些密密麻麻的括號和引號,而是能自信地讀懂 API 回傳的資料,為你的自動化技能打下最堅實的基礎!

到底什麼是 JSON?為什麼它這麼重要?

讓我們先從定義和它為何如此受歡迎開始。

JSON 的簡單定義:一種輕量級的資料交換格式

JSON 的全名是 JavaScript Object Notation (JavaScript 物件表示法)。雖然它的名字源自於 JavaScript,但現在它已經是一種完全獨立於任何程式語言、跨平台通用的「資料交換格式」。

它的核心概念非常簡單:用純文字來表示結構化的資料

「結構化」聽起來很學術,但其實就是把資料整理得有條有理,像是一張填寫好的個人資料卡,上面清楚標示著「姓名」、「電話」、「Email」等欄位和對應的內容。JSON 就是這張資料卡的「純文字版本」。

為什麼大家都愛用 JSON?(JSON vs XML)

在 JSON 出現之前,網路世界常用一種叫做 XML (eXtensible Markup Language) 的格式來交換資料。但如今,JSON 已經成為了絕對的主流,原因有三:

  1. 人類易讀易寫: 相較於 XML 繁瑣的標籤,JSON 的語法非常簡潔,更接近我們閱讀的習慣,讓開發者可以一目了然地看懂資料結構。
  2. 機器易於解析: JSON 的格式更輕量,檔案體積更小,這意味著電腦在解析和處理時速度更快、更有效率,能節省網路傳輸的頻寬和伺服器的運算資源。
  3. 跨語言通用: 幾乎所有主流的程式語言(Python, Java, PHP, C# 等)都有內建的函式庫可以輕鬆解析和生成 JSON。它就像是網路世界的「英語」,讓不同技術打造的應用程式可以順暢地溝通。

我們來看一個簡單的對比,同樣是表示一個人的資料:

XML 格式 (舊的方式):

<person>
  <name>王小明</name>
  <age>30</age>
</person>

JSON 格式 (現在的主流):

{
  "name": "王小明",
  "age": 30
}

是不是覺得 JSON 直觀多了?這就是它大受歡迎的原因。

什麼是JSON

JSON 的核心語法:秒懂「鍵值對」與基本規則

要讀懂 JSON,你只需要掌握它的核心組成:「鍵值對 (Key-Value Pair)」,以及兩個最重要的符號:{}[]

一切的基礎:「鍵 (Key)」:「值 (Value)」

JSON 的所有資料都是以成對的「鍵」和「值」來呈現的。

  • 鍵 (Key): 是資料的「標籤」或「欄位名稱」。它必須是一個用雙引號 "" 包起來的文字(字串)。
  • 值 (Value): 是這個標籤對應的「實際資料」。它可以是文字、數字、布林值,甚至是更複雜的物件或陣列。

你可以把它想像成一本字典裡的條目:"name": "王小明",其中 "name" 是單字(鍵),"王小明" 是它的解釋(值)。

兩個最重要的符號:{} 物件與 [] 陣列

JSON 用這兩個符號來組織資料的結構:

  • 物件 (Object) {}: 一個物件是由一個或多個「鍵值對」組成的無序集合,並用大括號 {} 包起來。它通常用來描述一個「事物」的完整屬性。
    • 比喻: 一個物件就像是「一張完整的個人名片」,上面有多個欄位(姓名、電話、地址)。
    • 範例:JSON{ "name": "陳經理", "company": "ABC 科技", "is_vip": true }
  • 陣列 (Array) []: 一個陣列是由一個或多個「值」組成的有序列表,並用中括號 [] 包起來。陣列中的項目可以是任何資料類型,包含物件。
    • 比喻: 一個陣列就像是「一疊名片」,裡面有很多張個人名片。
    • 範例:JSON[ "蘋果", "香蕉", "橘子" ]

JSON 的資料類型:不只是文字而已

在 JSON 的「值 (Value)」中,你可以使用以下幾種不同的資料類型,這也是你在使用 n8n 或 Zapier 時,處理不同欄位資料的基礎。

  • 字串 (String): 就是一般的文字,必須用雙引號 "" 包起來。例如:"台北市信義區"
  • 數字 (Number): 就是數字,包含整數和浮點數,不需要加引號。例如:1013.14
  • 布林值 (Boolean): 只有兩種可能的值:true (真) 或 false (假),代表「是」或「否」,不需要加引號。
  • 陣列 (Array): 如上所述,用 [] 包起來的列表。
  • 物件 (Object): 如上所述,用 {} 包起來的鍵值對集合。
  • Null: 代表「空值」或「沒有值」,不需要加引號。當某個欄位沒有資料時,通常會用 null 來表示。

實戰演練:一起來讀懂一段真實的 JSON 資料

理論說完了,我們來看一個結合了各種資料類型的真實範例。假設這是一個 API 回傳的產品列表資料:

JSON

[
  {
    "product_id": "A001",
    "name": "高效能無線滑鼠",
    "is_on_sale": true,
    "price": 1200,
    "specs": {
      "dpi": 1600,
      "connection": "藍牙5.0"
    },
    "colors": ["黑色", "白色", "藍色"],
    "review_score": 4.8,
    "notes": null
  },
  {
    "product_id": "B002",
    "name": "機械式鍵盤",
    "is_on_sale": false,
    "price": 3500,
    "specs": {
      "switch_type": "青軸",
      "connection": "USB-C"
    },
    "colors": ["黑色"],
    "review_score": 4.9,
    "notes": "附贈拔鍵器"
  }
]

讓我們一起來拆解它:

  1. 最外層是 [] 這代表整個資料是一個「陣列」,也就是一個列表。我們可以預期裡面會有很多個項目。
  2. 陣列裡有兩個 {} 列表中的每個項目都是一個「物件」,這裡代表有兩筆「產品」資料。
  3. 看第一個產品物件:
    • "product_id": "A001":產品 ID 是字串
    • "is_on_sale": true:是否特價中是布林值
    • "price": 1200:價格是數字
    • "specs": { ... }:規格欄位的值本身又是一個物件,裡面有更詳細的規格資料。
    • "colors": ["黑色", ...]:顏色欄位的值是一個陣列,裡面包含了多個顏色選項(都是字串)。
    • "notes": null:備註欄位是空值

看懂了嗎?當你在 n8n 的節點之間傳遞資料時,看到的就是這樣的結構。理解了這個結構,你就能輕鬆地用 . 來存取你想要的資料,例如 {{ $json.name }}{{ $json.specs.connection }}

什麼是JSON

結語:JSON,你與自動化世界的溝通橋樑

JSON 一點都不可怕,它只是網路世界用來打包和交換資料的一種極其方便、有條理的「快遞單」。它用簡單的「鍵值對」、物件 {} 和陣列 [],就能清晰地描述出複雜的資料結構。

當你掌握了閱讀 JSON 的能力,你就掌握了理解 API 回應的鑰匙。你將能清楚地知道資料如何被組織,以及如何在 n8n 或 Zapier 中精準地提取和運用這些資料。這不僅能讓你在建立自動化流程時更有信心,更能在除錯時,準確地定位問題的根源。

現在,就把這篇文章當作你的速查手冊,開始自信地探索 API 和自動化的廣大世界吧!

延伸閱讀:自動化 A-Z 全攻略:踏入 n8n、Zapier 前必懂的 19 個網路與 API 核心名詞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端