使用JSON作为配置文件已经成为一种趋势。

不要这样,一次都不要。因为这是非常不好的做法。

JSON不是为实现这一点而设计的。JSON是一种“轻量级数据交换格式”,它“易于人类读写”,“易于机器解析和生成”。

JSON作为一种数据交换格式,还是挺不错的。人很容易读写,机器很容易解析。机器可读和人类可读之间有很好的平衡。相比于XML,有了很大的改进。我认为对于机器可读或人类可读来说,XML非常差。

用它来做其他用途,有点像在说“哎,这个锤子真的很好钉啊!我喜欢!你怎么不去拧它?”当然,这也是一种方法,只是这个工作用错了工具。

缺点的详细描述

1.没有评论

这是目前为止最大的问题:不能给JSON添加评论。少数JSON解析器支持注释,但大多数不支持,不符合标准。事实上,出于各种原因,JSON明确不支持注释。

这会造成很多问题。

-没有办法记录设置原因。

-没有办法添加助记符或警告。

-没有办法在配置文件中保留一个基本的更改日志来记录已经做了哪些更改。

——调试难度更大,因为不可能快速注释掉一部分代码。

一种解决方案是使用新的键值对,例如:

但是这个真的很丑。

有人说可以用操作日志,但这是更糟糕的想法。看看下面使用bower包管理器的例子:

那么,为了找到一些重要的信息,你会查阅所有的操作记录吗?

当然不是。

2.可读性

这不是一般意义上的可读性。它对于数据交换格式是可读的,但是对于配置文件是不可读的。

可读性很重要。

3.严格的标准

JSON标准相当严格,这是它的优势。有了一个简单快速的解析器,你不必处理不同的格式,但这也意味着它更难写。

比如一个对象或者数组中的一个逗号就是一个错误,这个问题困扰了我很多次。如果您的字符串包含许多双引号,那么转义所有实例或引号将非常麻烦。

4.缺乏可编程性

不总是,但有时,尤其是当使用JSON配置一段代码时。

例如:

比如在MediaWiki的skin.json文件中,这就是一个问题。如果我加载了一个插件,不想在里面包含CSS,我们可以在PHP文件里解决,但是“解决”事情从来都不是最好的办法

MediaWiki中的旧方法要好得多,功能也更强。

比较方案

——JSON的创建者道格拉斯·克洛克福特,“推荐方式”是“在把文件交给JSON解析器之前,通过JSMin进行管理”。一些JSON解析器也显式支持注释。但是预处理配置文件是一件痛苦的事情。

-使用import、require、include或任何其他语言代码导入工具)。这意味着配置文件必须是受信任的源,并且通常是受信任的源。

——ini文件;不规范,但通常不是问题,因为配置文件只能被一个程序读取。

-toml非常类似于ini文件,但是是标准化的。

-YAML有点好...我猜...但是我不太喜欢它。我专门写过一篇文章:YAML可能没那么好用。

——虽然我不想推荐这种方法,“自制”的profile解析器很简单。在Python中:

真实例子

点名批评:-)

——MediaWiki新的扩展注册系统促使我写这篇文章。

——npm的-package.json。

-Bower不支持标注,很白痴。

...有很多很多的例子。......

建议:

JSON配置文件格式,参考链接http://octodecillion.com/blog/json-data-file-format/

反馈

你可以给我发一封电子邮件martin@arp242.net,或创建一个GitHub问题,以获得反馈。

译者:钱利鹏https://arp242.net/weblog/json_as_configuration_files-_please_dont程序员共读整理发布,转载请联系作者获得授权

1.《json文件 千万不要用JSON作配置文件》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《json文件 千万不要用JSON作配置文件》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1739903.html