使用 YAML 與 Java Properties 進行設定
這個轉換工具的功能
YAML 與 Java 的 .properties 是撰寫相同設定的兩種方式。properties 檔案每行儲存一組扁平的 鍵=值 配對,並以點來暗示階層(server.servlet.context-path=/api)。YAML 則以實際的縮排與巢狀結構來表達相同的階層。這個工具可讀取任一種格式,判斷你貼上的是哪一種,再改寫成另一種——把以點分隔的鍵展開成巢狀樹狀結構,或把樹狀結構重新攤平成以點分隔的路徑。
由於轉換是雙向的,且依據偵測到的結構而非固定範本進行,因此檔案來回轉換(YAML → Properties → YAML)後仍能得到相同的鍵與值。若要讓清單保持為清單,請在「陣列格式」選擇「索引 ([0])」;使用預設的「以逗號分隔」時,清單會變回單一文字值,# 開頭的行也會移到最上方。
何時使用
最常見的情況是 Spring Boot 專案在 application.properties 與 application.yml 之間遷移。團隊通常從 properties 開始,等到設定變得夠深、以點分隔的鍵難以閱讀時,再切換到 YAML。反方向的轉換同樣好用,例如當某個工具或部署流程需要扁平的 properties 時。
它也很適合用來快速比對兩份設定、把文件中的片段轉成專案實際使用的格式,或在提交前統一縮排與陣列樣式。
範例:一個伺服器區塊
properties 的 server.port=8080 與 server.servlet.context-path=/api 兩行,會變成一個巢狀的 YAML 區塊,其中 server 包含 port: 8080,以及一個存放 context-path: /api 的 servlet 鍵。再轉換回去時,以點分隔的鍵會原封不動地重現。像 8080 這樣的數字會維持不加引號,以保留其整數型別,而不會變成字串。
格式注意事項與邊界情況
開啟「保留註釋」(預設)時,以 # 開頭的行會移到結果最上方;行尾的註釋不會保留,註釋也不會留在它原本說明的鍵旁邊。從 YAML 轉 Properties 時,清單會變成一個以逗號分隔的值(tools=a,b)或索引行(tools[0]=a、tools[1]=b);從 Properties 轉 YAML 時,索引行會變成 YAML 的破折號清單。可調整縮排與字串引號(自動、總是、從不),以配合團隊的風格指南。自動類型偵測可避免布林值、整數與 null 值被加上引號。