JSON文件加注釋的7種方法
缺省不能加注釋,現實有需求
根據JSON規范(http://www.json.org, RFC 4627, RFC 7159),不支持注釋。JSON規范之所以不允許加注釋,主要是防止:過多的注釋,影響了文件本身的數據載體的目的。
但是有些場合,尤其是配置文件,還是希望能夠幫助說明數據項的含義。一方面有利於描述接口,另一方面能夠減少重復性的文檔。這在軟件快速開發實踐中有一定意義。

以下介紹幾種給JSON文件加注釋的方法。
方法一:直接用json-schema,使用規范中的注釋字段
在json-schema規范中數據結構定義JSON中有一些說明性字段(Annotation),這些字段對應的key有title, description, $comment, default, examples等,可以在這些字段(一般1個即可)中填寫某個數據項的含義與用法。這個方案的優點是功能強大,缺點是json-schema與json數據本身還是分離的。
http://json-schema.org/ ,規范網站
https://github.com/epoberezkin/ajv ,著名Javascript實現
方法二:使用JSON5規范
JSON5規范允許在JSON文件中加入注釋:單行注釋,多行注釋均可
可以使用npm的json5庫,用法與JSON庫類似。JSON5規范見:https://json5.org/

方法三:使用去注釋的庫
可以使用npm的strip-json-comments庫。支持去掉行注釋與塊注釋,然后再可以用標准的JSON.parse解析strip-json-comments庫見:https://github.com/sindresorhus/strip-json-comment
方法四:使用約定俗成的key作為注釋字段
如以"//"作為注釋的key. 但是如果有多個以"//"為key的屬性,是否符合協議的?答案是:協議理論上不允許。實現上(幾乎?)所有的JS環境都允許,解析之后,只保留最后一項常用的類似key還有: "_comment", "#####"("#"個數自定)等

方法五:使用重名key作為注釋。
即每個key,使用兩次,第1次做注釋,第2次做實際屬性。原理在方法四中已經介紹:協議理論上不允許。實現上(幾乎?)所有的JS環境都允許,解析之后,只保留最后一項

方法六:使用字段key加前綴做注釋key
例如加入屬性的key是xyz, 則?xyz作為注釋字段。這樣的好處是,沒有重名的字段,完全符合JSON協議。常用的前綴還有"#", "_", "__"等

方法七:使用支持注釋的配置文件管理模塊
如npm中rc庫(見:https://github.com/dominictarr/rc),或者config(見:https://github.com/lorenwest/node-config)
缺點是,只能用於配置相關的Json文件。使用方法需要依照模塊的要求。