修复 JSON 解析错误:Expected Property Name

这个错误通常意味着解析器遇到了一个不符合 JSON 规范的对象键:未加引号的键、注释、尾随逗号,或严格 JSON 中混入了 JavaScript 语法。

这个错误是什么意思

JSON 对象成员必须以一个带双引号的属性名开头。当解析器报 expected property name 或 expected property name or '}' 时,它通常正站在一个开头的 { 或一个 , 之后,等着读一个像 "name" 这样的键。如果它看到的是 name、// 注释、/* 注释 */,或者一个 } 紧跟在尾随逗号之后,就会停下来 —— 这些都是 JavaScript 的写法,不是严格 JSON。

最常见的原因

排查这个错误最快的方法是看报告的行列位置上的字符,再回看前一个 token。大多数情况都是四种小错误之一。

  • 未加引号的对象键,例如 { name: "Ada" }
  • 单引号的键或字符串,例如 { 'name': 'Ada' }
  • 从 JavaScript 或 JSONC 文件复制过来的注释
  • } 或 ] 之前的尾随逗号

出错示例

{ name: 'Ada', active: true, // copied from a JS object }

修复后的 JSON

{ "name": "Ada", "active": true }

修复清单

给每个键加双引号,把单引号字符串换成双引号字符串,删掉注释,去掉末尾逗号,并确保布尔值和 null 是小写。修完之后,在把这个值存到配置、发出 API 或粘贴到数据库迁移脚本之前,先跑一次严格校验。

自动修复何时是安全的

如果意图清晰,自动修复只做语法清理是安全的。不要把它当业务校验。如果某个键名、数字、日期或枚举可能有歧义,先修语法,然后再把结果与源系统或 API schema 做对比。