Json 和 YAML 比較

JSON (JavaScript Object Notation) 與 YAML (YAML Ain’t Markup Language) 是近年來最常被拿來比較的兩大格式。
簡單來說:JSON 是給機器看的,而 YAML 是給人看的

JSON 和 YAML 核心差異對比

特性 JSON (JavaScript Object Notation) YAML (YAML Ain’t Markup Language)
可讀性 中等(使用大量括號與引號,層級過深時較混亂) 極高(使用縮排表達層級,像文章一樣清爽)
語法嚴謹度 高(格式要求嚴格,錯誤會直接導致解析失敗) 中(對縮排非常敏感,需要精確但語法較簡潔)
支援註解 不支援(標準規範內不包含註解功能) 支援(使用 # 符號)
資料類型 基礎(字串、數字、陣列、物件、布林值、null) 豐富(除基礎型態外,支援時間、二進位、自定義類型)
解析速度 快(結構簡單,機器解析效能極高) 慢(語法複雜,解析時較耗費計算資源)
主要用途 Web API 資料傳輸、前端系統互動 軟體設定檔(如 Docker, Kubernetes, CI/CD 流程)

 

語法對比實例

假設我們要表達一本書的資訊,兩者的寫法如下:

JSON 範例
JSON 強調結構的完整性,所有的鍵(Key)都必須用雙引號包裹。


JSON

{
  "book": "Deep Learning",
  "tags": ["AI", "Tech"],
  "published": 2024,
  "available": true
}

 

YAML 範例
YAML 捨棄了花括號和引號,利用「縮排」來表達層級,視覺上非常清爽。


YAML

book: Deep Learning
tags:
  - AI
  - Tech
published: 2024
available: true
# 這是 JSON 做不到的註解功能

 

該如何選擇?

  1. 💡 選擇 JSON 的時機:
    • API 溝通:
    • JSON 是 Web 開發的標準語言,幾乎所有程式語言都有極速的內建解析器。

    • 機器對機器 (M2M):
    • 當資料只需要在系統間傳遞,不需要人類頻繁修改時。

    • 對效能有要求:
    • 處理大規模數據時,JSON 的解析效率遠高於 YAML。

  2. 💡 選擇 YAML 的時機:
    • 設定檔 (Config):
    • 例如 GitHub Actions、Kubernetes 或 Docker Compose,因為人類需要閱讀並維護這些檔案。

    • 需要寫註解:
    • 如果你希望說明某個參數為什麼要這樣設定,YAML 是唯一選擇。

    • 複雜層級:
    • 當設定層級很深時,YAML 的縮排格式比 JSON 的層層大括號更容易對齊。

  3. 💡 潛在的小陷阱
    • YAML 的縮排:
    • YAML 對空格非常敏感,如果你混用了 Tab 和空白鍵,可能會導致解析出錯。

    • JSON 的註解:
    • 雖然有些工具(如 VS Code 的 jsonc)允許在 JSON 寫註解,但這並非標準,換個環境可能就會失效。

 

發佈留言

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

*