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


当前回答

json 曾经支持评论,但被滥用,从标准中删除。

是从杰森的创造者那里降示的:

我删除了Json的评论, 是因为我看到有人利用他们来维持分解指令, 这种做法会破坏互操作性。 我知道,

json官方网站位于json.org.json被国际电子公司界定为一项标准。 总是有请愿程序要求修订标准。 出于若干原因,说明不可能加入json标准。

json 被设计成一种容易逆向工程(人类割除)的 xml 替代物。 它被简化到无需附加说明的地步。 它甚至不是标记语言。 目标是稳定性和互操作性。

任何理解目标方向“has-a”关系的人,都能理解任何json结构,这就是整个点。这只是一个带有节点标记(键/价值对)的定向环绕图(dag),这是一个近乎普遍的数据结构。

仅此说明要求的可能是“//这些是标记”。 关键名称可以按要求提供信息,允许任意的语义性。

任何平台都可以用几行代码分析json。 xml 需要复杂的 oo 图书馆, 在许多平台上都是不可行的 。

说明只会降低json 的互操作性。 没有什么可以补充的了, 除非您真正需要的是一个标记语言( xml) , 并且不关心您持续的数据是否容易解析 。

但Json的创造者也指出, js一直支持评论:

插入所有您喜欢的评论。 然后通过 Jsmin 管道, 然后再把它交给您的 Json 采摘师 。

其他回答

是, 新的标准json5 允许 c++ 样式注释, 以及许多其他扩展名 :

// A single line comment.

/* A multi-
   line comment. */

json5 数据交换格式 (json5) 是一套超常的json 组合, 旨在减轻json 的某些限制 。 它完全向后兼容, 使用它可能比撰写自定义的非标准采集器、 对现有的打开非标准功能或者使用像字符串字段这样的各种黑客来评论更好 。 或者, 如果使用中的解析器支持的话, 简单地同意我们使用 json 5 子集, 即json 和 c++ 风格评论 。 这比我们We tweak json 标准我们觉得合适的方法要好得多 。

已经存在 npm 软件包、 python 软件包、 java 软件包和 c 库。 它是向后兼容的 。 我看不出有什么理由继续使用“ 官方” json 限制 。

i 认为从json删除评论的原因与删除在java超载的操作员的理由相同: 可能会被错误地使用, 但却忽略了某些明显合理的使用案例。 对于操作员超载, 它就是矩阵代数和复杂数字。 对于 json 的评语, 它是配置文件和其他文件, 可由人类而不是仅由分析员撰写、 编辑或阅读 。

是的,你可以在json档案中发表评论。

{
    "": "Location to post to",
    "postUrl": "https://example.com/upload/",

    "": "Username for basic auth",
    "username": "joebloggs",

    "": "Password for basic auth (note this is in clear, be sure to use HTTPS!",
    "password": "bloejoggs"
}

a 批注只是描述一组代码或配置的目的的文字片段。 由于您可以在 Json 中指定多次密钥, 您可以这样做 。 它在方法上是正确的, 唯一的取舍是您在字典中将有一个空密钥, 并有一些垃圾值( 您可以修饰... ) 。

但我只看到我正在研究的一个项目 是这样做的, 我觉得这是一个非常干净的方法来做它。 享受吧!

特意从json中删除了评论。

我删除了Json的评论, 是因为我看到人们用他们来维持分析指令, 这种做法会破坏互操作性。 我知道缺乏评论会让一些人感到悲哀, 但不应该。 假设你正在使用 Json 来保存配置文件, 您想要做笔记。 继续, 插入所有您喜欢的评论。 然后通过 jsmin 插入它, 然后把它交给 Jsmin , 然后再交给 Jsson 牧师 。

源代码:由douglas crockford在 g+ 上的公开声明

如果您的上下文是节点. js 配置, 您可以考虑通过模块使用 javascript 。 exports 作为json 的替代 :

module.exports = {
    "key": "value",

    // And with comments!
    "key2": "value2"
};

需要的语法将保持不变。 作为 javascript, 文件扩展名应该是 .js 。

如果您使用 json5, 您可以包含注释 。


json5建议扩展至json, 目的是使人类更容易手写和保持。