JSON中可以使用注释吗?

Can comments be used in JSON?

我可以在JSON文件中使用注释吗?如果是这样,怎么办?


不。

JSON应该都是数据,如果您包含一个注释,那么它也将是数据。

您可以有一个名为"_comment"的指定数据元素(或其他东西),这些元素将被使用JSON数据的应用程序忽略。

您最好在生成/接收JSON的进程中拥有注释,因为它们应该事先知道JSON数据是什么,或者至少知道它的结构。

但如果你决定:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
  "_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"
            }
         }
      }
   }
}


不允许,JSON中不允许使用//…/*…*/格式的注释。此答案基于:

  • 网址:http://www.json.org
  • RFC 4627:用于javascript对象表示法(JSON)的application/json媒体类型
  • RFC7159 JavaScript对象表示法(JSON)数据交换格式-废弃:46277158


如果您选择,请包含注释;在解析或传输之前,请用一个小型化器将它们去掉。

我刚刚发布了json.minify(),它从一个JSON块中删除注释和空白,并使其成为可以解析的有效JSON。因此,您可以像这样使用它:

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

当我发布它的时候,我受到了很多人的强烈反对,他们甚至不同意我的想法,所以我决定写一篇综合性的博客文章来解释为什么JSON中的评论有意义。其中包括来自JSON创建者的这一著名评论:

Suppose you are using JSON to keep configuration files, which you would like to annotate. Go ahead and insert all the comments you like. Then pipe it through JSMin before handing it to your JSON parser. - Douglas Crockford, 2012

希望这对那些不同意json.minify()为什么会有用的人有帮助。