oro*_*ome 21 json comments webstorm
我的 IDE (WebStorm) 允许我在一些 JSON 文件中添加注释(例如,tsconfig.json
和.eslintrc.json
),但不允许在其他文件中添加注释(例如,package.json
和app.json
)。
前者随后在 GitHub 上被标识为“带注释的 JSON”(即使我实际上没有注释)。
为什么我可以在某些 JSON 文件中添加注释,而在其他文件中则不能?
len*_*ena 25
默认情况下,IDE 会检查严格的标准合规性,因为标准 JSON 不允许注释。
我们在“设置”|中提供了一组放宽合规性检查的选项。编辑| 检查、JSON 和 JSON5 | 符合 JSON 标准,对于某些文件,检查注释的选项默认处于关闭状态(tsconfig
和配置),tslint
因为eslint
相应的工具允许 JSON 中的注释(这是硬编码的)。
如果您需要向某些 JSON 文件添加注释,您可以将它们的名称添加到“设置 | ”中与JSON5文件类型关联的模式列表中。编辑| 文件类型- JSON5 标准允许注释
您不能在 JSON 文件中添加注释。JSON 不允许注释。请注意,序列化格式有几种略有不同的变体,它们都称为“JSON”,但这些变体都不允许注释:
它们之间存在一些细微的差异,但它们的共同点是不允许发表评论。这是设计使然。引用道格拉斯·克罗克福德的话:
我从 JSON 中删除了注释,因为我看到人们使用它们来保存解析指令,这种做法会破坏互操作性。我知道缺乏评论会让一些人感到难过,但不应该。
假设您使用 JSON 来保存您想要注释的配置文件。继续插入您喜欢的所有评论。然后通过 JSMin 将其传递给 JSON 解析器。
但是,有一些类似于 JSON 的序列化格式确实允许注释:
还有几个 JSON 解析库允许某些样式的注释,但没有一个单一的正式规范涵盖所有这些。
还有YAML - YAML Ain't Markup Language,它是 JSON 的超集并带有注释。
为什么我可以在某些 JSON 文件中添加注释,而在其他文件中则不能?
您不能在 JSON 文件中添加注释。但其中一些文件不是 JSON,它们是允许注释的不同文件。
特别是,TypeScript 和 ESLint 都恰好使用忽略注释的 JSON 解析器来解析其配置文件,并且一些编辑器、IDE、语法突出显示、语言检测器等都知道这一点,并将使用允许注释的解析器来解析这些文件。尽管请注意,由于没有带有注释的 JSON 的正式规范,因此不能保证 TypeScript 接受的注释也将被 ESLint 接受,或者 WebStorm 认为 TypeScript 会接受的注释实际上也会被接受。
如有疑问,请坚持使用正式的标准化格式,例如 YAML、OGDL(有序图形数据语言)或TOML(汤姆的显而易见的最小语言)。