JSON文件加注释的7种方法
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文件。使用方法需要依照模块的要求。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库