JSON 與 JavaScript 物件字面值的差異
JSON 看起來像 JavaScript 物件字面值,但它是更小、語法更嚴格、不含可執行值的資料格式。
簡短版本
JavaScript 物件字面值是原始碼;JSON 是資料交換格式。兩者重疊的部分多到容易混淆,但規則不同:JSON 的鍵與字串必須用雙引號;JSON 沒有註解;JSON 也無法表示函式、undefined、NaN、Infinity、Date 物件或正規式。
合法的 JSON 值
一份 JSON 文件可以包含物件、陣列、字串、數字、布林或 null。字串必須用雙引號;物件的鍵也必須是用雙引號的字串。數字不能使用 JavaScript 才有的形式,例如十六進位、NaN、Infinity 或數字分隔符。
- 合法 JSON 字串:"hello"
- 合法 JSON 布林:true
- 合法 JSON null:null
- 合法 JSON 物件鍵:"name"
合法的 JavaScript 但不是合法 JSON
{ name: 'Ada', active: true, createdAt: new Date(), onSave() { return true }, tags: ['dev',], }
對應的合法 JSON
{ "name": "Ada", "active": true, "createdAt": "2026-05-13T00:00:00.000Z", "tags": ["dev"] }
為什麼 API 會拒絕長得像 JavaScript 的資料
API 伺服器通常用 JSON 解析器解析請求主體,而不是 JavaScript 引擎。這是安全與互通性考量:任何語言都能解析同樣的資料,而不需要執行程式碼。如果請求主體含有註解、方法、undefined 或 new Date(),伺服器就不能安全地把它當作純資料處理。
如何安全地轉換
把可執行或語言特有的值換成純資料。日期改用字串,缺漏值改用 null 或直接省略鍵,註解搬到文件裡,函式則用顯式資料欄位(例如策略名稱或型別值)來表示。
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
- 在發送 API 請求前驗證 JSON
- JSON 格式化器 vs JSON 修復工具
- 修復 JSON Unexpected Token 錯誤
- JSON 轉 JavaScript 物件轉換工具