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


当前回答

i 只是为配置文件遇到这种情况。 我不想使用 xml (verbose, 图形化, 丑陋, 难以阅读) 或“ ini” 格式( 没有等级, 没有真正的标准等) 或 java “ properities” 格式( 如. ini) 。

json可以做他们所能做的一切, 但它的动词要少得多,更易人读—— 剖析器在许多语言中是简单易懂的和无处不在的。 它只是一棵数据树。 但是外带评论往往需要记录“ 默认” 配置和类似内容。 配置从来不是“ 完整的文档 ” , 但需要时保存的数据的树可以被人类读取。

我猜有人可以用"":"评论"来形容"有效"json"

其他回答

注释不是官方标准,尽管有些分析者支持 c++- 风格的注释。

// Configuration options
{
    // Default encoding for text
    "encoding" : "UTF-8",

    // Plug-ins loaded at start-up
    "plug-ins" : [
        "python",
        "c++",
        "ruby"
        ],

    // Tab indent size
    "indent" : { "length" : 3, "use_space": true }
}

jsonlint 不验证这一点 。 因此, 批注是解析器特定的扩展名, 而不是标准 。

另一本书是Json5。

取代json Toml的替代品。

另一种选择是jsonc。

Nlohmann/json的最新版本有选择的支持,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 文件中删除这些评论 !

如果你用杰克森做你的杰森采摘师 那么这就是你如何让它 允许评论:

ObjectMapper mapper = new ObjectMapper().configure(Feature.ALLOW_COMMENTS, true);

然后,你可以有这样的评论:

{
  key: "value" // Comment
}

并且也可以从设置开始有评论:

mapper.configure(Feature.ALLOW_YAML_COMMENTS, true);

但一般而言(如以前回答的)规格不允许提出评论。