协慌网

登录 贡献 社区

可以在 JSON 中使用注释吗?

1
88250
贡献值 30
贡献次数 1

可以在 JSON 文件中使用注释吗?如果可以,应该怎样做?

答案

1
88250
贡献值 295
贡献次数 1

JSON 中不支持注释。

JSON 中都是数据,如果你要包含注释,那么注释也应该是数据。

你可以指定一个名为 "_comment"(或其他)的数据元素,该元素应该被使用 JSON 数据的应用程序忽略。

另外,你最好在生成 / 接收 JSON 的过程中保留评论,因为这样可以让其他人更好地了解 JSON 数据,并知道有这个注释元素的存在。

参考示例:

{
   "_comment": "comment text goes here...",
   "glossary": {
      "title": "example glossary",
      "GlossDiv": {
         "title": "S",
         "GlossList": {
            "GlossEntry": {
               "ID": "SGML",
               "SortAs": "SGML",
               "GlossTerm": "Standard Generalized Markup Language",
               "Acronym": "SGML",
               "Abbrev": "ISO 8879:1986",
               "GlossDef": {
                  "para": "A meta-markup language, used to create markup languages such as DocBook.",
                  "GlossSeeAlso": ["GML", "XML"]
               },
               "GlossSee": "markup"
            }
         }
      }
   }
}
1
88250
贡献值 276
贡献次数 1

用不了 ,JSON 中不允许使用//…/*…*/形式的注释。参考文献:

  • http://www.json.org
  • RFC 4627: The application/json Media Type for JavaScript Object Notation (JSON)
  • RFC 7159 The JavaScript Object Notation (JSON) Data Interchange Format - Obsoletes: 4627, 7158

如果您选择,请附上评论; 在解析或传输之前用缩小器将它们剥离。

我刚刚发布了JSON.minify() ,它从 JSON 块中删除了注释和空格,并使其成为可以解析的有效 JSON。所以,您可以使用它:

JSON.parse(JSON.minify(my_str));

当我发布它时,我得到了一个强烈反对,甚至不同意它的想法,所以我决定写一篇关于为什么评论在 JSON 中有意义的综合博客文章。它包括来自 JSON 创建者的这个值得注意的评论:

假设您使用 JSON 来保留要注释的配置文件。继续,插入您喜欢的所有评论。然后通过 JSMin 将其传递给 JSON 解析器。 - 道格拉斯克罗克福德,2012 年

希望这对那些不同意JSON.minify()可能有用的人有帮助。