DevToolPal
繁

JSON5 轉 JSON

把 JSON5 或 JSONC(含註解、尾逗號、無引號鍵、單引號)轉換成嚴格的標準 JSON。

本機處理,不會上傳

選項

縮排

輸入

0 字元 · 0 B

輸出

0 字元 · 0 B

這是什麼

JSON5 是為手寫檔案設計的 JSON 擴充格式。它允許註解、尾逗號、不加引號的物件鍵、單引號字串,以及幾種更方便的數字寫法。Babel、部分打包工具和許多應用程式都接受 JSON5 或 JSONC(帶註解的 JSON,tsconfig.json 和 VS Code 設定就是用它)作為設定格式。

但許多解析器、API 和程式語言只接受嚴格的 JSON。這個轉換器讀取 JSON5 或 JSONC,輸出任何 JSON 解析器都能接受的標準 JSON:所有鍵都用雙引號,沒有註解、沒有尾逗號,數字一律寫成十進位。

怎麼用

  1. 貼上 JSON5 或 JSONC,上傳 .json5、.jsonc 或 .json 檔案,或按 範例。
  2. 選擇 縮排:2 或 4 個空格,或選 壓縮 輸出成一行。
  3. 選擇 Infinity 和 NaN 的處理方式:轉成 null、轉成字串,或顯示錯誤。
  4. 複製或下載產生的 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 相同。也可以改成轉為字串,或直接顯示錯誤並指出確切路徑。

› 資料會上傳嗎?

不會。解析與轉換完全在瀏覽器中進行,含有密鑰的設定檔不會離開你的裝置。