BrowserDevTools

JSON/YAML/XML/TOML 工具箱

貼上一份文件:它會就地完成格式化、驗證與轉換——YAML 與 XML 的註解會保留,錯誤會附上行與欄,想看看兩個版本之間改了什麼時,還有結構化差異比對。

當來源與目標格式相同時,註解、鍵的順序、CDATA 與處理指令都會保留。轉換成其他格式會經過值模型,所以註解留不住——說明區會在有這種情況時告訴你。

文件是在這個分頁裡解析的。不上傳任何東西、不儲存任何東西,也不會產生分享連結——不像那些一按「儲存」就把你的檔案 POST 到伺服器的格式化工具。

輸出

{format} 解析器還在載入中(它是隨需載入,讓頁面保持輕量)。請稍後再試一次。

一般格式化工具做錯的三件事

格式化 JSON 早就被解決了,會做這件事的頁面也多到不差這一個。有趣的是這些頁面在美化輸出之外還做了什麼——我翻過「json formatter」第一頁的搜尋結果後,有三個習慣特別刺眼:

所以這個頁面把這三件事做成不一樣,並且在上面加上格式轉換矩陣:

全部都在本機執行:解析器是隨需載入的(所以在你真的貼上東西之前,頁面一直很輕),文件永遠不離開分頁,也沒有分享連結可以外洩。格式之間的轉換會經過一個通用的值模型,它對自己的限制很誠實,並把限制寫在說明裡:XML 屬性會變成「@name」鍵,重複的子節點會變成陣列;YAML 錨點會被展開;註解在格式化時留得住,但轉換時留不住。還有一個刻意的省略:TOML 與 YAML 無法表示每一種 JSON 形狀,所以無法表達的轉換會直接大聲失敗,而不是寫出微妙的錯誤結果。

常見問題

我的文件會被上傳嗎?
不會。解析、格式化與差異比對全都在你的瀏覽器分頁裡進行;YAML 與 TOML 解析器是隨需從同一個來源載入,你貼上的任何內容都不會送到別的地方。你可以自己在 Network 面板確認。要對照的是那些提供「分享」連結的格式化工具——那種才是真的會上傳你的檔案,而且通常還公開存放。
註解真的會保留嗎?
會,前提是來源與目標格式相同時的 YAML 與 XML:YAML 會透過它的文件模型重新輸出,XML 則由一個保留註解、CDATA、XML 宣告、DOCTYPE 與處理指令的詞法分析器重新縮排。跨格式轉換會經過值模型,所以註解留不住——輸出會在說明裡講明。
錯誤位置有多精確?
JSON 的錯誤是由專用的掃描器定位(現代 V8 已經完全不回報位置,所以行與欄是在這裡算出來的),訊息也會點名常見的嫌疑犯:尾逗號、單引號、鍵沒有加引號、註解、字串沒有結束。YAML 的位置來自解析器,XML 來自詞法分析器,TOML 則由它自己回報。
差異比對比的是什麼?
比結構,不是比文字。兩份文件都會被解析後以資料相比,所以搬了位置的鍵、換了型別的值、變長的陣列、消失的鍵,都會以路徑(servers[1].port)加上前後值呈現——不用再盯著兩面彩色文字牆看到眼睛脫窗。
支援哪些轉換?
JSON、YAML、XML 與 TOML 之間的任何方向,但受限於目標格式能表達什麼:TOML 頂層必須是物件,而且沒有 null,所以無法表示的轉換會回報為錯誤,而不是被默默扭曲。XML 使用慣例的對應方式——屬性變成 @name,重複的元素變成陣列,文字變成值。