這是什麼
JSON5 是為手寫檔案設計的 JSON 擴充格式。它允許註解、尾逗號、不加引號的物件鍵、單引號字串,以及幾種更方便的數字寫法。Babel、部分打包工具和許多應用程式都接受 JSON5 或 JSONC(帶註解的 JSON,tsconfig.json 和 VS Code 設定就是用它)作為設定格式。
但許多解析器、API 和程式語言只接受嚴格的 JSON。這個轉換器讀取 JSON5 或 JSONC,輸出任何 JSON 解析器都能接受的標準 JSON:所有鍵都用雙引號,沒有註解、沒有尾逗號,數字一律寫成十進位。
怎麼用
- 貼上 JSON5 或 JSONC,上傳
.json5、.jsonc或.json檔案,或按 範例。 - 選擇 縮排:2 或 4 個空格,或選 壓縮 輸出成一行。
- 選擇
Infinity和NaN的處理方式:轉成null、轉成字串,或顯示錯誤。 - 複製或下載產生的 JSON。
如果輸入有語法錯誤,訊息會顯示行號與欄號,可以直接跳到出錯位置。一般 JSON 也是合法的 JSON5,所以也能用它確認檔案可以解析,並順便重新縮排。
範例
下面這段 JSON5 設定:
// Server settings
{
host: 'localhost',
port: 0x1F90, // 8080
ratio: .5,
tags: ['api', 'v2',],
}
會變成這樣的嚴格 JSON:
{
"host": "localhost",
"port": 8080,
"ratio": 0.5,
"tags": [
"api",
"v2"
]
}
註解被移除,鍵和字串加上雙引號,十六進位數字和省略整數部分的小數改寫成十進位,尾逗號也被去掉。
會轉換哪些內容
- 移除
//行註解和/* */區塊註解。 - 不加引號的鍵(如
port)和單引號字串(如'localhost')改成雙引號。 - 行尾以反斜線續行的字串合併成一個字串。
- 十六進位(
0xFF)、省略整數或小數部分的小數(.5、5.)和明確的正號(+3)改寫成一般十進位數字。 - 移除物件和陣列中的尾逗號。
- 同一個鍵出現兩次時,與 JavaScript 相同,取最後一個值。
常見問題
› JSON5 和 JSONC 有什麼不同?
JSONC 是在 JSON 上加入註解(VS Code 中還允許尾逗號)。JSON5 更進一步:無引號鍵、單引號字串、多行字串、十六進位數字、省略整數或小數部分的小數,以及 Infinity 和 NaN。JSON5 是 JSONC 的超集,所以本工具兩種都能讀取。
› 註解會保留嗎?
不會。標準 JSON 沒有註解語法,因此註解會被移除。如果需要保留,請把 JSON5 檔案當作原始檔,再從它產生 JSON。
› Infinity 和 NaN 會怎麼處理?
嚴格的 JSON 無法表示它們。預設轉成 null,與 JavaScript 的 JSON.stringify 相同。也可以改成轉為字串,或直接顯示錯誤並指出確切路徑。
› 資料會上傳嗎?
不會。解析與轉換完全在瀏覽器中進行,含有密鑰的設定檔不會離開你的裝置。