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

更新於 2024/01/31閱讀時間約 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的頂尖人才。

avatar-img
116會員
261內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
JSON 全名 JavaScript Object Notation,其格式基本上就是key: value的組成如下: { "name": "Bob", "age": 40, "childs": [ { "name": "Justin", "
請耐心閱讀到最後, 我們會提供更優雅的方式來處理這項需求… 故事起源 我們常常在使用Python的過程中會進行I/O的一些處理, 那麼最基本的就會是讀取檔案列表並對每一個特定的檔案名稱進行處理, 像這樣: import glob mp4_files = glob.glob(os.path
關於字幕檔我們常常會看到「.srt」、「.ass」、「.vtt」…等影片的字幕格式, 但你知道嗎? 這些字幕檔是很重要的一個寶貴資訊, 可以從中對段落的長度、文字進行提取, 此時就需要一個強大的工具來幫我們解析一下字幕檔, 就讓我們來看看怎麼用吧! 安裝 pip install pysubs2
這次要來介紹「pytube」這套神器, 當我們需要對影音進行統計分析時就需要使用這把利器來破關, 尤其是AI時代的來臨, 我們會需要大量的資料來進行模型的訓練, 而我們總不可能海量的去撈取這些資料, 會非常沒有效率也浪費空間, 因此我們會先進行偵查的任務, 需要派出偵察隊來蒐集youtube的影音資
講到Docker之前就必須先談談容器化, 容器化是一種軟體開發的方法, 將程式、依賴及組態封裝在映像檔之中, 那映像檔對於大部份的人來說一定非常的熟悉, 尤其是VM這個詞, 虛擬化技術的先行者, 有了這項技術之後, 我們就可以減少一些因為環境產生的問題導致難以排查程式錯誤的狀況, 甚至可以避免因為A
一早看著IThome的新聞發現到這個標題「📢 PyPI新帳號現需要啟用雙因素驗證才能執行管理操作」, 而近期幾乎都在接觸Python語言, 在Python的生態圈裡相信對於「pip install…」應該相當熟悉了吧! 但對於背後的平台相信我們不曾仔細去了解一番, 這好藉著這次的觀點也順便來介紹一
JSON 全名 JavaScript Object Notation,其格式基本上就是key: value的組成如下: { "name": "Bob", "age": 40, "childs": [ { "name": "Justin", "
請耐心閱讀到最後, 我們會提供更優雅的方式來處理這項需求… 故事起源 我們常常在使用Python的過程中會進行I/O的一些處理, 那麼最基本的就會是讀取檔案列表並對每一個特定的檔案名稱進行處理, 像這樣: import glob mp4_files = glob.glob(os.path
關於字幕檔我們常常會看到「.srt」、「.ass」、「.vtt」…等影片的字幕格式, 但你知道嗎? 這些字幕檔是很重要的一個寶貴資訊, 可以從中對段落的長度、文字進行提取, 此時就需要一個強大的工具來幫我們解析一下字幕檔, 就讓我們來看看怎麼用吧! 安裝 pip install pysubs2
這次要來介紹「pytube」這套神器, 當我們需要對影音進行統計分析時就需要使用這把利器來破關, 尤其是AI時代的來臨, 我們會需要大量的資料來進行模型的訓練, 而我們總不可能海量的去撈取這些資料, 會非常沒有效率也浪費空間, 因此我們會先進行偵查的任務, 需要派出偵察隊來蒐集youtube的影音資
講到Docker之前就必須先談談容器化, 容器化是一種軟體開發的方法, 將程式、依賴及組態封裝在映像檔之中, 那映像檔對於大部份的人來說一定非常的熟悉, 尤其是VM這個詞, 虛擬化技術的先行者, 有了這項技術之後, 我們就可以減少一些因為環境產生的問題導致難以排查程式錯誤的狀況, 甚至可以避免因為A
一早看著IThome的新聞發現到這個標題「📢 PyPI新帳號現需要啟用雙因素驗證才能執行管理操作」, 而近期幾乎都在接觸Python語言, 在Python的生態圈裡相信對於「pip install…」應該相當熟悉了吧! 但對於背後的平台相信我們不曾仔細去了解一番, 這好藉著這次的觀點也順便來介紹一
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
第一篇介紹了韓國交換簽證的申請流程,這次就來介紹怎麼申請資料公證吧!
Thumbnail
資料分析就像廚師料理一樣,但你知道可以分成哪9大流程嗎?一起看看資料分析流程和廚師料理有多像!
Thumbnail
隨著大數據(Big Data)和人工智慧(AI)技術快速發展,能夠協助我們從價值較低的”資料(Data)"中提煉出價值較高的”資訊(Information)"。但是資料怎麼來呢?邊跟大家介紹一個有多種有趣的資料而且資料量龐大的資料來源:行動電信廠商的資料,可用於市場分析、廣告投放、風險評估。
Thumbnail
近期臺灣的雞蛋供應量逐漸減少,因此面臨缺蛋危機。此現象是由於多重因素引起的,其中包括家禽疾病、氣候變化供應鏈問題等。觀察Google Trend討論可以發現,此次缺蛋潮似更加嚴重,進而導致搜尋熱度創新高。
Thumbnail
最近在公司跟資料科學家一起討論了產品推薦機制的運作邏輯,才開始理解了甚麼是關聯分析(Associative Analysis),覺得挺有趣的,想說把學習心得記錄下來,藉此機會跟大家分享。 接著下來,我們就以「樂屋網」產品的使用者行為資料庫,做為假設的範例,進行簡單的解釋說明。 條件機率與貝氏定理
Thumbnail
這個Excel VBA程式碼是協助我檢查個股的月資料,是否有符合季節性的現象,例如檢查傳產標的是否都在12月份有很大的上漲機率,我利用Excel VBA的Public與Function的功能,使我自編的函數公式可以被Excel 的儲存格運用,從而提升資料處理的效率
Thumbnail
如果各位家長在委託空間專業者時(不論是室內設計或是建築營造)不願意給足10%設計費,請不要逼自己的孩子念建築,不要逼他們進入這個由你們親自造成的病態產業結構裡。
上週Coscup在kernel的BoF前 , 與社群友人聊到供應鏈或物流使用blockchain的新聞 誤解 看新聞都會提到blockchain的不可篡改可以用在物流追蹤或供應鏈管理 是的 , 沒錯
Thumbnail
<p>腦神經科學的研究認為,人腦天生會去尋找各種意義與連結,在金融領域的技術線圖容易讓人潛意識裡做出趨勢延伸的推論。</p>
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
第一篇介紹了韓國交換簽證的申請流程,這次就來介紹怎麼申請資料公證吧!
Thumbnail
資料分析就像廚師料理一樣,但你知道可以分成哪9大流程嗎?一起看看資料分析流程和廚師料理有多像!
Thumbnail
隨著大數據(Big Data)和人工智慧(AI)技術快速發展,能夠協助我們從價值較低的”資料(Data)"中提煉出價值較高的”資訊(Information)"。但是資料怎麼來呢?邊跟大家介紹一個有多種有趣的資料而且資料量龐大的資料來源:行動電信廠商的資料,可用於市場分析、廣告投放、風險評估。
Thumbnail
近期臺灣的雞蛋供應量逐漸減少,因此面臨缺蛋危機。此現象是由於多重因素引起的,其中包括家禽疾病、氣候變化供應鏈問題等。觀察Google Trend討論可以發現,此次缺蛋潮似更加嚴重,進而導致搜尋熱度創新高。
Thumbnail
最近在公司跟資料科學家一起討論了產品推薦機制的運作邏輯,才開始理解了甚麼是關聯分析(Associative Analysis),覺得挺有趣的,想說把學習心得記錄下來,藉此機會跟大家分享。 接著下來,我們就以「樂屋網」產品的使用者行為資料庫,做為假設的範例,進行簡單的解釋說明。 條件機率與貝氏定理
Thumbnail
這個Excel VBA程式碼是協助我檢查個股的月資料,是否有符合季節性的現象,例如檢查傳產標的是否都在12月份有很大的上漲機率,我利用Excel VBA的Public與Function的功能,使我自編的函數公式可以被Excel 的儲存格運用,從而提升資料處理的效率
Thumbnail
如果各位家長在委託空間專業者時(不論是室內設計或是建築營造)不願意給足10%設計費,請不要逼自己的孩子念建築,不要逼他們進入這個由你們親自造成的病態產業結構裡。
上週Coscup在kernel的BoF前 , 與社群友人聊到供應鏈或物流使用blockchain的新聞 誤解 看新聞都會提到blockchain的不可篡改可以用在物流追蹤或供應鏈管理 是的 , 沒錯
Thumbnail
<p>腦神經科學的研究認為,人腦天生會去尋找各種意義與連結,在金融領域的技術線圖容易讓人潛意識裡做出趨勢延伸的推論。</p>