JSON 轉 JavaScript 物件轉換工具
嚴格 JSON 可以用 JSON.parse 轉換為 JavaScript 物件;JavaScript 物件字面值則需要先整理一遍才能成為合法 JSON。
在 JavaScript 裡轉換 JSON
如果輸入已經是合法 JSON,最安全的轉換器是 JSON.parse(jsonText)。它會回傳一般的 JavaScript 物件、陣列、字串、數字、布林或 null,而且不會執行任何程式碼。
JSON 輸入
{ "name": "Ada", "active": true, "skills": ["math", "notes"] }
JavaScript 用法
const user = JSON.parse(jsonText); console.log(user.name);
物件字面值輸入則不一樣
{ name: 'Ada', active: true } 這種 JavaScript 物件字面值不是 JSON。在拿它走 JSON.parse 之前,要先修復未加引號的鍵、把單引號改成雙引號、刪掉註解與尾隨逗號。
什麼時候不要用 eval
不要用 eval 把未知文字變成物件。eval 會執行程式碼,而 JSON.parse 只解析資料 —— 這正是嚴格 JSON 在 API 負載、設定、日誌與貼上的範例中更安全的原因。
邊界情況:日期、undefined、函式
JSON 沒有 Date、undefined、函式這些型別。日期透過 ISO 字串往返;undefined 在 stringify 時會被丟掉;函式完全無法表示。如果 JavaScript 物件含有這些值,轉出的 JSON 只是個有失真的快照 —— 必要時用 JSON.parse 的 reviver 函式來明確還原型別。
TypeScript 與型別推論
JSON.parse 的回傳型別是 'any',因為解析器無法事先知道形狀。要拿到帶型別的存取,可以在用 zod、io-ts 這類 schema 程式庫驗證之後寫 JSON.parse(text) as User;也可以用本站的 JSON 轉 TypeScript 工具,從範例產生介面。
反方向:物件轉 JSON
JSON.stringify(value, null, 2) 會從 JavaScript 值產生格式化的 JSON。它會默默丟掉 undefined、函式與 Symbol 鍵;遇到循環參考會丟出例外。 第二個參數可以傳 replacer 函式來控制保留哪些欄位 —— 在把物件送出去之前剝離內部細節時很有用。
JSON 修復指南
主題中心
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
具體指南
- 如何解碼 Base64 字串(以及 JWT Payload)
- URL 編碼:對查詢參數與路徑做百分號編碼
- 將 YAML 轉為 JSON(並避免縮排錯誤)
- 將 JSON 轉為 CSV:把物件陣列扁平化
- 將 JSON 轉為 XML:根元素、屬性與陣列
- 將 JSON 跳脫為字串字面值(並解碼被雙重編碼的 JSON)
- 修復 JSON 中的尾隨逗號
- 修復 JSON 中的單引號
- 修復 JSON 中未加引號的鍵
- 修復 LLM 輸出的 JSON
- 修復 JSON 解析錯誤:Expected Property Name
- JSON 與 JavaScript 物件字面值的差異
- 在發送 API 請求前驗證 JSON
- JSON 格式化器 vs JSON 修復工具
- 修復 JSON Unexpected Token 錯誤