JSON文件加注釋的7種方法


 

JSON文件加注釋的7種方法

缺省不能加注釋,現實有需求

根據JSON規范(http://www.json.org, RFC 4627, RFC 7159),不支持注釋。JSON規范之所以不允許加注釋,主要是防止:過多的注釋,影響了文件本身的數據載體的目的。

但是有些場合,尤其是配置文件,還是希望能夠幫助說明數據項的含義。一方面有利於描述接口,另一方面能夠減少重復性的文檔。這在軟件快速開發實踐中有一定意義。

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/

json5格式直接支持注釋

方法三:使用去注釋的庫

可以使用npm的strip-json-comments庫。支持去掉行注釋與塊注釋,然后再可以用標准的JSON.parse解析strip-json-comments庫見:https://github.com/sindresorhus/strip-json-comment

 

方法四:使用約定俗成的key作為注釋字段

如以"//"作為注釋的key. 但是如果有多個以"//"為key的屬性,是否符合協議的?答案是:協議理論上不允許。實現上(幾乎?)所有的JS環境都允許,解析之后,只保留最后一項常用的類似key還有: "_comment", "#####"("#"個數自定)等

特殊約定的key可以作為注釋的標志

方法五:使用重名key作為注釋。

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

同個key使用2次,1次作為注釋

方法六:使用字段key加前綴做注釋key

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

給key加前綴作為注釋的標志

方法七:使用支持注釋的配置文件管理模塊

如npm中rc庫(見:https://github.com/dominictarr/rc),或者config(見:https://github.com/lorenwest/node-config)

缺點是,只能用於配置相關的Json文件。使用方法需要依照模塊的要求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM