JSON、YAML、XML 怎麼選?三種資料格式比較

寫程式、串接 API、設定伺服器時,一定會碰到 JSON、YAML、XML 這三種格式。它們都是用「純文字」描述結構化資料的方法,但設計理念與擅長的領域各不相同。這篇文章用同一份資料做比較,帶你了解什麼時候該用哪一種。

同一份資料,三種寫法

假設要描述一本書的資料:

JSON

{
  "title": "資料格式入門",
  "price": 450,
  "inStock": true,
  "tags": ["程式", "入門"]
}

YAML

# 書籍資料
title: 資料格式入門
price: 450
inStock: true
tags:
  - 程式
  - 入門

XML

<book inStock="true">
  <title>資料格式入門</title>
  <price>450</price>
  <tag>程式</tag>
  <tag>入門</tag>
</book>

一眼就能看出差異:JSON 用大括號與引號,結構明確;YAML 用縮排表示層級,最簡潔;XML 用成對的標籤,最冗長但也最嚴謹。

JSON:程式與 API 的通用語言

JSON(JavaScript Object Notation)源自 JavaScript,但現在幾乎所有程式語言都內建支援。它只有六種資料型別:字串、數字、布林值、null、陣列與物件,規則簡單到幾乎不會有歧義。

YAML:給人讀寫的設定檔

YAML 的設計目標是「人類容易閱讀」。它用縮排取代括號,可以寫註解,還支援多行文字、錨點引用等進階功能。實際上 JSON 幾乎可以被視為 YAML 的子集,大多數合法的 JSON 也是合法的 YAML。

XML:嚴謹的文件標記語言

XML(eXtensible Markup Language)比另外兩者歷史更久,原本是為了標記「文件」而設計。它有屬性與子元素兩種表達方式,搭配 XSD 綱要可以嚴格驗證資料是否正確,並有命名空間等機制處理複雜文件。

比較總表

JSONYAMLXML
可讀性中高低
註解不支援支援(#)支援(<!-- -->)
資料型別內建 6 種自動判斷,較豐富全部是文字,靠綱要定義
屬性無無有
檔案大小小最小大
適合程式之間傳資料人手寫設定文件與嚴格驗證

互相轉換要注意什麼?

怎麼選?

簡單的判斷原則:給程式讀的用 JSON,給人改的用 YAML,需要和既有系統或標準對接的用 XML。實務上你不一定能選擇——對方的 API 用什麼格式,你就得處理什麼格式。這時候可以用本站的資料格式轉換工具,貼上文字就能即時轉換,也方便用來檢查格式有沒有寫錯。