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作为注释。

即每个key,使用两次,第1次做注释,第2次做实际属性。原理在方法四中已经介绍:协议理论上不允许。实现上(几乎?)所有的JS环境都允许,解析之后,只保留最后一项

同个key使用2次,1次作为注释

方法六:使用字段key加前缀做注释key

例如加入属性的key是xyz, 则?xyz作为注释字段。这样的好处是,没有重名的字段,完全符合JSON协议。常用的前缀还有"#", "_", "__"等

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

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

缺点是,只能用于配置相关的Json文件。使用方法需要依照模块的要求。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐