【資料交換格式 - YAML】YAML真的有比較好嗎? 與JSON相比又如何?應用場景…

2023/08/27閱讀時間約 3 分鐘
圖片來源

圖片來源

我們在「【程式語言 - Javascript】輕量資料格式 JSON」有稍微介紹了JSON格式, 也知曉JSON格式非常簡單暴力, 只要一對<key>與<value>就能成行, 對於工程人員來說已經比XML、文字檔…等傳統格式更加容易理解, 而且也具備一定的資料型態基礎, 但使用這麼久以來常常發現到想要對某個欄位註解時好像不太容易, 頂多就是多一個欄位叫做「description」來描述一下該元素的內容, 這樣又佔用了一些空間, 似乎有點冗餘, 那有沒有更好的選擇呢? 答案是有的, 也就是今天的主角YAML, 那你可能會問有沒有更好的, 嗯…, 人總是不容易滿足啊, 沒關係,TOML這傢伙更厲害, 我們後續專門一篇來詳說它。

對了, 開發人員本來JSON用的好好的, 幹麻要發展一套YAML啊! 別忘了隨著雲端時代的來臨, 許多佈署都需要雲, 也意味著Devops新興角色的興起, 那總不可能都面向開發吧! 畢竟不是誰都是開發背景出身的, 因此簡化配置、更加去工程化是必然的發展趨勢, 也誕生出了YAML格式。

好了, 廢話不多說, 就讓我們來介紹今天的主角吧…

YAML與JSON

直接上圖感受一下兩者差異吧…

圖片來源

圖片來源

一張圖就能夠看得出來整體整潔度右邊的YAML更勝一籌, 行數也更加的短, JSON有的YAML也能夠有, 那我們為何不學學呢?

有什麼特點

  • 可讀性較佳。
  • 除了基本型態(int、string…)之外更支援set、map…等擴展型態。
  • 支持註解。
  • 簡單的邏輯運算(and、or…)。

可能會有哪些🕳️坑呢?

---
# 使用引號包裹包含特殊字符的字串
# ✔️ description: "This is a colon: and a curly brace: {}"
description: This is a colon: and a curly brace: {} # ❌

# 注意字典中 `:` 的使用, 應該要用逗號隔開
# ✔️ details: {name: Alice, age: 30}
details: {name: Alice: age: 30} # ❌

# 多行字符串格式問題
# ✔️ message: |
# This is a
# multi-line message.
message: |
This is a
multi-line message.# ❌

🚀 試試看…

不同的場景之下選用什麼格式?

這一篇的介紹並不是要推薦大家無腦的使用YAML這種格式, 其實他們擅長的領域有所不同, 由於JSON目前仍是廣泛應用於API的交換格式, 因此像是設計API這類資料交換格式時還是可以優先考慮JSON的, 但像是我們系統後端的配置檔就可以考慮使用YAML/TOML這類對於維運人員更友善的格式進行配置。

總結幫大家歸類如下:

圖片來源

圖片來源


送給大家線上環境無痛玩轉YAML

🛠️ Online YAML Tools

圖片來源

圖片來源

在這邊可以找到各式各樣的YAML輔助工具, 最小化、驗證、格式化、轉換格式…, 應有盡有, 請善加利用。

結語

總結來說,YAML確實存在著不少的好處,但並不是每種場景都適用的,網路傳輸的API還是JSON當道,不過時代的演進,新的資料交換格式確實也帶來不少的好處,我們不妨試著去理解一下邏輯與脈絡,嘗試在每個小元件之中加入一些新的概念,讓產品越來越好。


學習軟體開發的路上常常苦於網路資訊爆炸嗎? 教學何其多,但卻遇到無法明確選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您業界開發重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。

91會員
260內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!