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

更新於 發佈於 閱讀時間約 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
留言分享你的想法!
avatar-img
阿Han的沙龍
129會員
283內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2024/09/25
使用docker compose來編排容器化程式非常的方便, 但隨著應用越來越複雜, 我們每個Service會有許多共同掛載的目錄、環境變數, 那這些在傳統的程式語言都能藉由繼承、覆寫的技巧來簡化程式碼, 但在YAML呢? 有沒有這樣的功能呢? 答案是有的, 也就是 anchors & ali
Thumbnail
2024/09/25
使用docker compose來編排容器化程式非常的方便, 但隨著應用越來越複雜, 我們每個Service會有許多共同掛載的目錄、環境變數, 那這些在傳統的程式語言都能藉由繼承、覆寫的技巧來簡化程式碼, 但在YAML呢? 有沒有這樣的功能呢? 答案是有的, 也就是 anchors & ali
Thumbnail
2023/09/07
上一篇我們為您帶來了「【資料交換格式 - YAML】YAML真的有比較好嗎? 與JSON相比又如何?應用場景…」,相信對於YAML與JSON這兩種資料交換格式已經相對的熟悉了吧,那這次我們介紹一個更新的資料交換格式TOML,從上一篇我們可以知道YAML相較於JSON之下帶來了許多的好處,也越來越多的
Thumbnail
2023/09/07
上一篇我們為您帶來了「【資料交換格式 - YAML】YAML真的有比較好嗎? 與JSON相比又如何?應用場景…」,相信對於YAML與JSON這兩種資料交換格式已經相對的熟悉了吧,那這次我們介紹一個更新的資料交換格式TOML,從上一篇我們可以知道YAML相較於JSON之下帶來了許多的好處,也越來越多的
Thumbnail
2023/08/24
JSON 全名 JavaScript Object Notation,其格式基本上就是key: value的組成如下: { "name": "Bob", "age": 40, "childs": [ { "name": "Justin", "
Thumbnail
2023/08/24
JSON 全名 JavaScript Object Notation,其格式基本上就是key: value的組成如下: { "name": "Bob", "age": 40, "childs": [ { "name": "Justin", "
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
Anytype主要分為四區塊:目錄欄(Widget組成)、主編輯畫面、導航選單、設定區。
Thumbnail
Anytype主要分為四區塊:目錄欄(Widget組成)、主編輯畫面、導航選單、設定區。
Thumbnail
本文主要在討論以 Docs as Code 方法來撰寫技術文件,此做法能否滿足企業內部對知識管理的需求。
Thumbnail
本文主要在討論以 Docs as Code 方法來撰寫技術文件,此做法能否滿足企業內部對知識管理的需求。
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
在專案中與廠商測試API回傳的json字串出現無法解析的狀況,記錄發現過程與解決的紀錄,提供程式面和檔案面的解決方法。
Thumbnail
在專案中與廠商測試API回傳的json字串出現無法解析的狀況,記錄發現過程與解決的紀錄,提供程式面和檔案面的解決方法。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News