首頁 › 程式開發 › YAML 轉 JSON
🔧

YAML 轉 JSON

YAML 轉 JSON、JSON 轉 YAML 雙向轉換:區塊縮排、流程集合、區塊純量、錨點與多文件都能解析,報錯帶行號列號並指出原文那一行

转换选项
转换在本机浏览器完成,内容不会上传。Ctrl+Enter 立即转换。
输入 YAML
把 .yml / .yaml / .json 文件拖到此处,或点击选择文件
等待输入
结果
树视图
错误详情
JSON 结果

工具介紹

YAML 給人讀、JSON 給機器讀,兩邊來回搬運是設定工作的日常。麻煩在於 YAML 的規則比看起來多:縮排錯一個空格就換層級,| 和 > 對換行的處理不一樣,yes 會被當成布林值,Tab 根本不合語法。這個工具把解析寫成顯式規則,出錯時告訴你第幾行第幾列、把原文那一行指出來,而不是只回一句「解析失敗」。

能解析什麼

  • 區塊結構:區塊映射與區塊序列、序列裡再嵌映射、任意深度縮排;同層級鍵值對齊方式錯了會按位置報錯
  • 流程集合:{a: 1, b: [2, 3]} 這類一行寫法,可以跨行、可以和區塊結構混用
  • 純量:單引號(連寫兩個單引號表示一個引號)、雙引號(\t \n \" 等轉義)、無引號純文字,整數、負數、小數、科學記號、0x 十六進位、null 與 ~ 與空值、true/false
  • 區塊純量:| 保留換行、> 摺疊換行,配合 - 去掉尾部換行、+ 連尾部空行也留著,縮排區塊內不再做轉義
  • 錨點與引用:&name 定義、*name 重用、合併鍵 <<: *base 把公共欄位併進目前映射,轉換結果裡全部展開成實際值
  • 註解與多文件:# 註解與空行不影響解析;一個檔案裡用 --- 分隔多個文件,打開多文件模式後結果輸出為陣列
  • 型別標籤:!!str、!!int、!!float、!!bool、!!seq、!!map 會按標籤指定的型別處理,寫 !!str 42 出來就是字串

四個開關的作用

選項取值影響
縮排2 / 4 / 8 空格、Tab控制輸出的巢狀縮排寬度。轉 JSON 時選 Tab 會真的用定位字元縮排;轉 YAML 時選 Tab 會明確提示 YAML 規定縮排只能用空格
JSON 輸出格式化 / 壓縮壓縮模式一行出完,適合塞進設定項或命令列參數
嚴格模式開 / 關打開後布林只認 true/false,yes no on off 一律按字串保留
多文件開 / 關按 --- 切成多個文件,結果輸出為陣列;不開時一旦偵測到多個文件就直接報錯並提醒勾選,不會只轉第一個卻讓你以為轉完了

看結果的三個面板

  • 結果:轉換產物,可複製或下載成檔案,方向切換後副檔名跟著變
  • 樹狀檢視:可摺疊,每個節點標出型別與條目數,點一行就把它的節點路徑顯示在上方並支援一鍵複製,排查設定時把這個路徑報給別人,比截圖說「第三層那個」省事得多
  • 錯誤詳情:行號、列號、原文那一行加指向符,多個問題會列成清單

輸入方式

  • 直接把 .yml、.yaml、.json、.txt 檔案拖到頁面虛線框上,或者點擊選取檔案
  • 在輸入區 Ctrl+V 貼上內容即時轉換,也可以按 Ctrl+Enter 強制立刻重算
  • 「交換方向」按鈕把目前結果原樣送到另一側繼續處理,來回對照格式差異很省事

常見問題

  • 報「mapping values are not allowed here」是什麼意思?最常見兩種情況:縮排比上層鍵多而沒構成合法結構;或者值裡出現未加引號的冒號加空格,例如把 url: http://a 寫成 note: 見 http: a。給值加上引號就行,報錯面板會指出具體行列
  • 能用 Tab 縮排嗎?不能。YAML 規定縮排只能用空格,混進 Tab 會被明確指出位置。編輯器裡建議把 .yml 設成空格縮排
  • 哪些寫法不在實作範圍內?顯式鍵(一行寫 ? 鍵、下一行寫 : 值)會直接報錯並指出行號,不會靜默丟節點;不認得的 !! 標籤會給一條提示後按內容本身的型別讀取;... 文件結束標記後面必須緊跟 ---,否則同樣報錯到行
  • 為什麼 yes 變成了 true?YAML 1.1 把 yes、on 這類寫法當布林值,預設行為跟多數解析器一致。想讓它們保持字串就勾選嚴格模式,或者直接給值加引號
  • 註解會保留嗎?轉成 JSON 時不會,JSON 語法裡沒有註解。反向轉 YAML 時也只會保留值本身,原來的註解與文件結構說明得自己補
  • 錨點會不會被展開?會。別名與合併鍵在結果裡展開成實際內容,所以 JSON 裡沒有引用概念;改錨點定義會影響所有引用它的節點
  • 日期會變成什麼?JSON 沒有日期型別,日期時間純量按字串輸出,不會自動換算成時間戳。反向寫 YAML 時,形如 2026-10-01、12:30:00 的字串會自動加引號,免得別的解析器把它們讀成日期或六十進位數字
  • 同名鍵出現兩次怎麼辦?後者覆蓋前者,這與主流解析器一致。需要同時保留兩份值時請改鍵名
  • 內容會上傳嗎?不會。解析、產生、樹狀檢視、下載全在瀏覽器裡完成,頁面不發送任何請求,內網與斷網都能用

拿到 JSON 後要繼續排版用 JSON 格式化;層級太深想邊看邊收錄用 JSON 層級檢視;轉成 PHP 設定陣列用 JSON 轉 PHP;匯出表格用 JSON 轉 CSV;設定裡的 JS 片段排版見 JS 程式碼格式化;改完一版想對比差異用文字比對。