我可以在json文件里使用注释吗? 如果是的话,怎么写?


当前回答

你可以在jsonp中发表评论,但不能在纯json中发表评论。 我只是花了一个小时试图用这个高雅的图表来做我的节目。

如果你遵循链接,你将看见

?(/* AAPL historical OHLC data from the Google Finance API */
[
/* May 2006 */
[1147651200000,67.79],
[1147737600000,64.98],
...
[1368057600000,456.77],
[1368144000000,452.97]
]);

我本地文件夹里也有类似的文件, 与同一来源的政策没有问题, 所以我决定使用纯json... 当然,$. Getjson因为评论而沉默不语。

我最后向上述地址发送了一份手册 http 请求, 并意识到内容类型是文本/ javascript, 因为, jsonp 返回纯正的 javascript 。 在此情况下, 批注是允许的 。 但我的应用程序返回了内容类型应用程序/ json, 所以我不得不删除批注 。

其他回答

至少这是我在Json. org的一眼 所经历的

json的语法在那一页上被视觉化了。

json不支持评论,也从未打算用于需要评论的配置文件。

hjson 是人类的配置文件格式。 放松语法, 减少错误, 更多评论 。

图书馆、java、python、php、生锈、走、红宝石、C+++和c图书馆见hjson.github.io。

没有。

json is only data. 如果您包含一个注释, 那么它也必须是数据 。

您可以有一个名为“_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"
            }
         }
      }
   }
}

(hack)是一个很好的解决办法(hack),这是有效的json,但并非在所有情况下都能奏效(见下文的评论)。

{
  "param" : "This is the comment place",
  "param" : "This is value place",
}

所以json会理解这一点:

{
  "param" : "This is value place",
}

json 的作者希望我们把评论写进json里, 但是在解析之前先把评论删掉( 见 Michael Burr 提供的链接 ) 。 如果json 有评论的话, 为什么不将评论标准化, 让 Json 牧师来做工作? 我不同意这里的逻辑, 但是, 可惜, 这就是标准。 使用其他人建议的山药解决方案是好的, 但是它需要图书馆的依赖性 。

如果您想要删除注释, 但不想有图书馆依赖性, 这里是一个双线解决方案, 用于 c++- 风格的注释, 但可以适应其它选项 :

var comments = new RegExp("//.*", 'mg');
data = JSON.parse(fs.readFileSync(sample_file, 'utf8').replace(comments, ''));

请注意,只有在您可以确定json数据不含评论启动器的情况下,例如('/'),才能使用这一解决方案。

实现 json 解析、 解析评论和不增加图书馆的另一种方法, 就是用 javascript 解释器来评价json 。 当然, 这个方法的提醒是, 您只想要评价未污染的数据( 不可信用户- 输入 ) 。 这是在 node. js 中的一个例子-- 另一个警告, 以下示例将只读过一次数据, 然后它会被缓存 :

data = require(fs.realpathSync(doctree_fp));