返回首页 返回笔记列表

JSON 常见错误与修复方法

作者:本站站长
发布日期:2025年9月26日

JSON(JavaScript Object Notation)是现代 Web 开发中最常用的数据交换格式。虽然语法简单,但在实际使用中,开发者常因格式不规范或理解偏差导致解析失败。本文总结了 JSON 最常见的 8 大错误,并提供详细的修复方法,助你快速排查问题。

一、JSON 语法基本规则回顾

在排查错误前,先明确 JSON 的核心规则:

二、常见错误与修复方法

1. 错误:使用单引号代替双引号

❌ 错误示例:
{
  'name': '张三',
  'age': 25
}
✅ 修复方法:全部使用双引号
{
  "name": "张三",
  "age": 25
}

2. 错误:键名未加引号

❌ 错误示例:
{
  name: "李四",
  city: "北京"
}
✅ 修复方法:所有键必须加双引号
{
  "name": "李四",
  "city": "北京"
}

3. 错误:末尾多出逗号(Trailing Comma)

❌ 错误示例:
{
  "title": "文章标题",
  "author": "王五",  ← 多余的逗号
}
✅ 修复方法:删除最后一个元素后的逗号
{
  "title": "文章标题",
  "author": "王五"
}

4. 错误:包含注释

❌ 错误示例:
{
  "apiUrl": "https://api.example.com",
  // "timeout": 5000 ← 注释不被支持
  "retry": 3
}
✅ 修复方法:删除所有注释
{
  "apiUrl": "https://api.example.com",
  "retry": 3
}

💡 提示:如需说明,可在文档或代码注释中补充。

5. 错误:值为 undefined 或函数

❌ 错误示例:
{
  "callback": function() {},  ← 函数不支持
  "value": undefined         ← undefined 不支持
}
✅ 修复方法:移除或替换为支持的类型
{
  "callback": null,
  "value": null
}

或在 JSON.stringify() 时使用 replacer 过滤。

6. 错误:字符串未闭合或包含非法字符

❌ 错误示例:
{
  "desc": "这是一个未闭合的字符串
}
✅ 修复方法:确保字符串用双引号闭合,换行需用 \n
{
  "desc": "这是一个已闭合的字符串\n第二行"
}

7. 错误:日期对象直接写入 JSON

❌ 错误示例:
{
  "created": new Date()  ← 这不是合法 JSON
}
✅ 修复方法:日期应转为 ISO 字符串
{
  "created": "2025-09-26T02:45:00Z"
}

在 JavaScript 中可用 new Date().toISOString() 生成。

8. 错误:嵌套结构错误(括号不匹配)

❌ 错误示例:
{
  "users": [
    {"name": "Alice"},
    {"name": "Bob"}
  ]  ← 缺少外层对象的结束大括号?
}
✅ 修复方法:确保所有括号成对出现
{
  "users": [
    {"name": "Alice"},
    {"name": "Bob"}
  ]
}

三、如何快速检测 JSON 错误?

1. 使用浏览器控制台

try {
  JSON.parse('你的JSON字符串');
  console.log("✅ JSON 格式正确");
} catch (e) {
  console.error("❌ JSON 错误:", e.message);
}

2. 使用在线验证工具

3. VS Code 插件

安装 JSON ToolsPrettify JSON,可自动格式化和高亮错误。

四、常见错误速查表

错误类型 错误示例 修复方法
单引号 'name': 'Tom' 改为双引号 "name": "Tom"
尾随逗号 "age": 30, 删除逗号
注释 // 注释 删除注释
未闭合字符串 "desc": "hello 补全 "
函数/undefined "fn": function(){} 替换为 null 或移除

五、总结

JSON 虽然简单,但格式要求极其严格。一个多余的逗号或单引号就会导致整个解析失败。掌握这些常见错误和修复方法,能显著提升开发效率。

最佳实践:

记住:JSON 不是 JavaScript 对象!它是纯文本数据格式。理解这一点,就能避免大多数陷阱。