YAML & JSON &XML如何選擇
阿新 • • 發佈:2020-07-06
## 前言
本文翻譯[https://www.csestack.org/yaml-vs-json-vs-xml-difference/](https://www.csestack.org/yaml-vs-json-vs-xml-difference/),下文會針對當前現有的資料序列化語言做下梳理。重點突出YAML是什麼,優缺點,和YML/JSON對比,以便於大家依據自己場景選擇合適的語言。
## YAMML 簡介
YAML和JSON、XML一樣是資料序列化語言,使用縮排來描述格式化資料。
下面的例子可以看到其如何工作的:
就像Python一樣有個縮排約束,假如有過python開發體驗的話,就會很明顯的發現其使用縮排的數量來定義不同的區塊。正如前面提到,有很多如JSON、XML這樣被廣泛使用的序列化語言。
### YAML使用場景
對於序列化語言來說,使用場景如下:
* 與伺服器之間傳輸資料
* 使用一個配置檔案來配置應用,這些檔案宣告對應引數和相應取值
* 在同一個應用不同元件之間轉換資料
* 中間資料儲存
針對此類場景,YAML有一些明確的優勢相比於其他同類語言。也是為什麼現在越來越多的開發者使用其的地方。
### YAML的優勢
* YAML中沒有額外的定界符,所以相比JSON或者XML更輕量級。
* 沒有額外定界符,所以更易讀(這裡持原作者和譯者都持保留觀點,不少開發者認為有定界符的可讀性更強。)
* YAML使資料更易於理解,因此常用於配置檔案中(觀點同上)
* 應用比價哦廣泛,除配置檔案之外,傳輸資料和中間儲存都有實踐。
* YAML是JSON 的超集,對於合法的JSON程式碼,同樣可以被YAML解析,這樣對於使用JSON和YAML的應用來說,可以使用一個解析器完成兩種解析。
然而其並沒有如期望中那樣受歡迎,具體而言,因為不同的序列化語言都有其特定的適宜語言或者場景(下文可以提到),並且YAML有一些不足相較於其他廣泛使用的序列化語言。
### YAML的不足
* 相對年輕,早期很多應用已經使用JONS或者XML來構建,對於開發者來說遷移至YAML成本是十分高的。
舉例,假如我們負責的專案是使用XML的,就算我們開發獨立的外掛也會傾向於XML以便更加契合。
* 流行廣泛程度反向作用域生態系統,例如XML 有著比YAML極為成熟的生態。JSON從2000年開始出現,同樣被高度採用。因此在YAML上可以找到對JSON的支援(譯者注:既有向現實妥協的味道,也是聰明的做法)
* YAML中有很多方式來體系化資料層級,因此處理時會相對複雜些。效能上相對於XML和JSON會有差別。
* 可能一些開發人員發現很難使用其複雜的縮排格式。
## 三種概述
YAML,XML和JSON是常用的資料序列化語言,下面會針對三者之間的不同展開敘述。原作者針對如何選擇適合自己專案的資料序列化語言給出了部分建議,以供參考。
## 三者直觀對比
* YAM 是 'YAML Aint Markup Language'(YAML不是一種標記語言