为什么VS Code允许.vscode目录下JSON写注释,其他位置却不支持?
VS Code JSON注释规则差异问题解答
是否属于微软违反JSON规范的双重标准?
JSON官方标准RFC 8259确实未定义注释语法,原生JSON不支持注释是通用规则。VS Code出现不同位置JSON注释权限差异,本质是不同文件默认匹配的语法校验模式不同,不属于违反规范的双重标准:
.vscode目录下的配置文件,默认被关联为jsonc(带注释的JSON)模式,VS Code自身读取这些配置的解析器提前做了注释兼容处理,因此允许编写注释- 其他未做特殊配置的
.json文件,默认匹配标准json模式,校验规则严格遵循原生JSON规范,因此会提示注释不合法
这个设计的逻辑是:VS Code明确知道自有配置的解析能力,因此放开对应限制;对其他用途未知的JSON文件,默认按最通用的原生标准校验,避免用户写出不符合下游解析规则的无效文件。
是不是仅.vscode下的JSON可以使用注释?
不是,能否加注释的核心判断标准是你当前编写的JSON文件对应的实际读取/解析工具是否明确支持注释语法:
- 除了.vscode目录下的配置外,还有很多常用JSON配置天然允许加注释,比如
tsconfig.json、.eslintrc.json、babel.config.json等,这些工具的官方解析器本身就兼容注释语法,VS Code也默认给这类文件关联了jsonc模式,不会触发注释报错 - 若JSON文件的读取方未做注释兼容(比如给后端接口传输的JSON报文、不支持注释的第三方工具配置文件),则无论放在什么路径下,都不能加注释,否则会直接导致解析失败
如果你的项目有自定义JSON配置,且你已经确保解析逻辑兼容注释,也可以手动在VS Code设置中添加文件关联,将对应路径的JSON文件指定为jsonc模式,即可关闭注释报错提示。
内容的提问来源于stack exchange,提问作者Chuck
相关产品推荐
相关产品推荐

