JSON 能写注释吗:标准的答案与四种替代
标准 JSON 不支持注释——写了就解析失败。这是设计者刻意的决定。这篇讲清为什么,以及配置文件想要注释时的四种实用替代。
写了注释会怎样
上面这段在几乎所有标准解析器里都会直接报错。JSON 之父 Douglas Crockford 刻意移除了注释:一是保持格式极简,二是他观察到有人用注释存放置指令,让格式产生方言、失去互操作性。
{
// this comment breaks JSON.parse
"name": "app"
}替代一:换带注释的方言
很多工具链已经支持 JSONC(JSON with Comments)或 JSON5:VS Code 的配置、tsconfig 都是 JSONC;JSON5 还允许尾逗号、单引号、裸键名。如果配置文件由你控制解析端,直接换方言是最舒服的。
替代二:开发期方言、交付前剥离
开发期用 JSON5 / JSONC 自由写注释,交付或部署前剥成标准 JSON——站内「JSON5 转 JSON」工具就是干这个的,注释剥掉时会计数提示,不会静默吞内容。
{
// JSON5 / JSONC: comments allowed
"name": "app", // trailing comma is fine too in JSON5
}替代三:用字段当注释
在数据里放一个约定字段(常见 _comment、//、description)。缺点明显:它是真实数据,会被传输存储、可能与业务字段撞名,消费方还得约定忽略它。只适合偶尔标注一两处的场景。
{
"_comment": "workaround: a plain field used as a note",
"name": "app"
}替代四:换配置格式
如果场景本来就是「人写的配置」,YAML 与 TOML 原生支持注释,可能比在 JSON 上打补丁更对路——参见站内 JSON 与 YAML / TOML 的互转工具与对比教程。