在调用 API、编辑配置文件或处理数据时,一个微小的 JSON 语法错误就会导致整个解析失败。错误信息往往晦涩难懂,找到真正的出错位置更是费时费力。
了解 JSON 最常见的 5 类语法错误和标准规范,配合 Suried Tools 的精确错误定位功能,你可以在几秒内修复任何 JSON 问题。
01 错误一:尾部多余逗号(Trailing Comma)
JSON 标准(RFC 8259)明确规定:对象的最后一个键值对和数组的最后一个元素后面不能有逗号。这是从 JavaScript 转写 JSON 时最常见的错误。
虽然 JavaScript 允许尾部逗号(trailing comma),但 JSON 不允许。解析器遇到逗号后紧跟 } 或 ] 会直接报语法错误。
修复方法:删除最后一个元素后面的逗号。Suried Tools 会精确指向多余逗号的位置。
02 错误二:键名未加双引号
在 JavaScript 对象中,键名可以不加引号(如 { name: "Alice" }),但 JSON 要求所有键名必须用双引号包裹(如 { "name": "Alice" })。
这个错误在手动编写 JSON 或从 JavaScript 对象字面量复制代码时特别常见。解析器会报"期望字符串"或"意外标记"等错误。
03 错误三:使用单引号代替双引号
JSON 的字符串值和键名只能使用双引号("),不能使用单引号(')。这是 Python 开发者特别容易犯的错误,因为 Python 中单双引号等效。
将所有单引号替换为双引号即可修复。注意字符串内容中如果包含双引号,需要用反斜杠转义(\")。
Suried Tools 可以自动检测并建议将单引号替换为双引号。
04 错误四:括号或花括号不匹配
在复杂的嵌套 JSON 中,遗漏或多加一个 ]、} 是非常常见的。这类错误的错误信息通常出现在文件末尾,但真正出错的位置可能在文件中间。
解决方法是使用格式化工具自动缩进,这样每层嵌套的开闭括号会对齐,缺失的括号一目了然。Suried Tools 的错误提示会尝试推断出最可能缺失括号的位置。
05 错误五:字符串中的特殊字符未转义
JSON 字符串中有几个字符必须转义:双引号(\")、反斜杠(\\)、换行符(\n)、制表符(\t)等。直接在字符串中包含这些字符会导致解析失败。
特别容易出错的场景是:文件路径包含反斜杠(如 Windows 路径 C:\Users\...)、HTML 内容包含双引号、多行文本包含换行符。
- \" — 双引号
- \\ — 反斜杠
- \n — 换行符
- \t — 制表符
- \u0000 — Unicode 转义
常见问题
JSON 中可以写注释吗?
标准 JSON 不支持任何形式的注释(不能用 // 或 /* */)。如果你需要带注释的配置文件,可以使用 JSON5 或 JSONC(JSON with Comments)格式。许多现代工具(如 VS Code 的 settings.json)使用的是 JSONC。
为什么 JSON 不支持 NaN 和 Infinity?
JSON 的设计目标是跨语言数据交换格式,而 NaN 和 Infinity 不是所有编程语言都支持的概念。JSON 数值只允许标准的十进制数字格式。如果需要表示这些值,建议用字符串或 null 替代。
JSON 键名的顺序有影响吗?
根据 JSON 标准,对象中键名的顺序不应有语义影响。但在实际应用中,某些签名验证算法会依赖键的排列顺序。如果遇到签名不匹配的问题,尝试对键名进行字母排序。
如何处理 JSON 中的日期时间?
JSON 没有原生的日期时间类型,日期通常表示为 ISO 8601 格式的字符串(如 "2024-01-15T08:30:00Z")。这是最通用的做法,几乎所有语言和框架都能正确解析。
Suried Tools 能自动修复 JSON 语法错误吗?
对于常见的简单错误(如尾部逗号、单引号),工具提供了自动修复建议。但对于结构性问题(如严重的括号不匹配),建议根据错误提示手动修复,以确保数据语义正确。