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


当前回答

如果您以文本文件的形式装入, 您可以使用带有注释的 json , 然后删除注释 。

例如,您可以为此使用 decomment 库。下面是一个完整的示例。

输入json (文件输入.js) :

/*
* multi-line comments
**/
{
    "value": 123 // one-line comment
}

测试应用程序 :

var decomment = require('decomment');
var fs = require('fs');

fs.readFile('input.js', 'utf8', function (err, data) {
    if (err) {
        console.log(err);
    } else {
        var text = decomment(data); // removing comments
        var json = JSON.parse(text); // parsing JSON
        console.log(json);
    }
});

输出 :

{ value: 123 }

ưμ㼯A

其他回答

*.json文件通常用作配置文件或静态数据,因此需要评论 * 一些像Netbeans这样的编辑在 *.json中接受评论。

问题在于将内容解析到对象上。 解决办法是总是应用清洁功能( 服务器或客户端 ) 。

php /p

 $rgx_arr = ["/\/\/[^\n]*/sim", "/\/\*.*?\*\//sim", "/[\n\r\t]/sim"];
 $valid_json_str = \preg_replace($rgx_arr, '', file_get_contents(path . 'a_file.json'));

手笔

valid_json_str = json_str.replace(/\/\/[^\n]*/gim,'').replace(/\/\*.*?\*\//gim,'')

json 不是一个框架化的协议。 它是一种语言自由格式。 所以没有为 json 定义注释格式 。

许多人建议,有些把戏,例如,重复键或特定键的注释,你可以使用。这取决于你。

在撰写本报告时,Appings.json支持评论。

例如(微软的样本)

{
  "Logging": {
    "LogLevel": { // All providers, LogLevel applies to all the enabled providers.
      "Default": "Error", // Default logging, Error and higher.
      "Microsoft": "Warning" // All Microsoft* categories, Warning and higher.
    },
    "Debug": { // Debug provider.
      "LogLevel": {
        "Default": "Information", // Overrides preceding LogLevel:Default setting.
        "Microsoft.Hosting": "Trace" // Debug:Microsoft.Hosting category.
      }
    },
    "EventSource": { // EventSource provider
      "LogLevel": {
        "Default": "Warning" // All categories of EventSource provider.
      }
    }
  }
}

json对配置文件和其他本地使用非常有意义, 因为它无处不在, 因为它比xml简单得多。

如果人们有强烈的理由反对在传送数据时在json中发表评论(无论是否有效),那么json可能会被分成两个:

json-com: json on the winet, 或在传送json数据时适用的规则。 json- doc: json文件, 或文件或本地文件中的json。 定义有效的json文件的规则 。

json-doc将允许评论,而其他细小差异可能也存在,例如处理白色空间。 剖析器可以很容易地从一个形状转换成另一个形状。

Douglas Crockford就该问题发表的评论(由@artur czajka提及)

假设您正在使用 json 来保存配置文件, 您想要对此进行注释。 请继续, 插入所有您想要的注释 。 然后通过 jsmin 进行管道, 然后将它交给您的 json 采集器 。

我们谈论的是通用配置文件问题(跨语言/平台), 他用js特定工具回答!

可以用任何语言来实施json特定的简化, 但将其标准化, 使得它变得无所不在, 在所有语言和平台的旁听者之间无处不在, 所以人们不再浪费时间来缺少这个功能, 因为他们有很好的使用案例, 在网上论坛里研究这个问题, 并让人们告诉他们这是一个坏主意, 或者说很容易执行删除文本文件的评论。

另一个问题是互操作性。 假设您有图书馆或 api 或任何子系统, 有与其相关的配置或数据文件 。 这个子系统将使用不同语言访问 。 那么您是否要告诉人们: 顺便说一句, 请不要忘记在将 Json 文档中的评论转至 Parser 之前, 请先从 Json 文件中删除这些评论 !

在json中不允许使用表格///...或/*...* /的注释。

https://www.json.org rfc 4627: Javacampn 对象标记(json)申请/json媒体类型(json) rfc 8259; json) 数据交换格式(supercedes rfcs 4627, 7158, 7159)