为什么我可以在一些JSON文件中添加注释,而不能在其他文件中添加注释?

为什么我可以在一些JSON文件中添加注释,而不能在其他文件中添加注释?,json,comments,webstorm,Json,Comments,Webstorm,我的IDE(WebStorm)允许我在一些JSON文件中添加注释(例如,tsconfig.JSON和.eslintrc.JSON),但不允许在其他文件中添加注释(例如,package.JSON和app.JSON) 前者随后在GitHub上被标识为“带注释的JSON”(即使我实际上没有注释) 为什么我可以在一些JSON文件中添加注释,而不能在其他文件中添加注释?默认情况下,IDE会检查是否严格遵守标准,因为标准JSON不允许添加注释 我们有一组选项可以在设置|编辑器|检查、JSON和JSON5 |

我的IDE(WebStorm)允许我在一些JSON文件中添加注释(例如,
tsconfig.JSON
.eslintrc.JSON
),但不允许在其他文件中添加注释(例如,
package.JSON
app.JSON

前者随后在GitHub上被标识为“带注释的JSON”(即使我实际上没有注释)


为什么我可以在一些JSON文件中添加注释,而不能在其他文件中添加注释?

默认情况下,IDE会检查是否严格遵守标准,因为标准JSON不允许添加注释

我们有一组选项可以在设置|编辑器|检查、JSON和JSON5 |符合JSON标准中放松合规性检查,对于某些文件,检查注释的选项默认为关闭(
tsconfig
tslint
eslint
configs),因为相应的工具允许JSON中的注释(这是硬编码的)


如果需要向某些JSON文件添加注释,可以将它们的名称添加到与设置|编辑器|文件类型中的JSON5文件类型相关联的模式列表中。JSON5标准允许注释

您不能在JSON文件中添加注释。JSON不允许注释。请注意,有两个序列化格式的不同变体都称为“JSON”,但都不允许注释:

它们之间有一些细微的区别,但它们都有一个共同点,即它们不允许评论。这是出于设计。引用道格拉斯·克罗克福德的话:

我从JSON中删除了注释,因为我看到人们用它们来保存解析指令,这种做法会破坏互操作性。我知道缺少注释会让一些人感到难过,但这不应该

假设您使用JSON保存配置文件,您希望对其进行注释。继续并插入所有您喜欢的注释。然后通过JSMin将其传递给JSON解析器

但是,有些序列化格式看起来类似于JSON,允许注释:

还有几个JSON解析库允许一些注释样式,但没有一个正式规范涵盖所有注释样式

还有,它是JSON的超集,有注释

为什么我可以在一些JSON文件中添加注释,而不能在其他文件中添加注释


你不能将注释放在JSON文件中。但其中一些文件不是JSON,它们是允许注释的不同文件

特别是,TypeScript和ESLint碰巧都使用忽略注释的JSON解析器来解析其配置文件,一些编辑器、IDE、语法高亮器、语言检测器等都知道这一点,并将使用允许注释的解析器来解析这些文件因此,无法保证TypeScript接受的注释也会被ESLint接受,或者WebStorm认为TypeScript会接受的注释实际上会被接受


如果有疑问,请坚持使用正式的标准格式,如YAML或。

Ah,这样基本上我的IDE足够聪明,可以知道一些JSON(这里是ESLint和TypeScript)的使用者不会介意是否有注释。(Github基本上标记这些文件不是标准JSON。)