在保留对象键顺序的同时修改JSON文件
在NodeJS中解析JSON文件,对其进行细微修改,然后将其写回磁盘,而不更改其中任何对象的任何键的顺序,这是一种好方法吗 为了解决通常的问题,“但是JSON不能保证密钥顺序!你所做的不是JSON!你会为每个人破坏互联网!”在保留对象键顺序的同时修改JSON文件,json,node.js,object,Json,Node.js,Object,在NodeJS中解析JSON文件,对其进行细微修改,然后将其写回磁盘,而不更改其中任何对象的任何键的顺序,这是一种好方法吗 为了解决通常的问题,“但是JSON不能保证密钥顺序!你所做的不是JSON!你会为每个人破坏互联网!” 人类经常处理JSON配置文件。即使关键顺序对项目没有意义,他们也可能以某种方式组织了项目,不希望看到这样的变化 JSON文件通常提交到源代码管理中。无故更改密钥顺序会导致修订历史垃圾邮件 JSON文件通常用于互操作性。仅仅因为我的程序是纯粹的、神圣的、符合标准的,并不意味
- 人类经常处理JSON配置文件。即使关键顺序对项目没有意义,他们也可能以某种方式组织了项目,不希望看到这样的变化
- JSON文件通常提交到源代码管理中。无故更改密钥顺序会导致修订历史垃圾邮件
- JSON文件通常用于互操作性。仅仅因为我的程序是纯粹的、神圣的、符合标准的,并不意味着它可以与其他程序进行互操作
var j = require('myfile.json');
...
fs.writeFileSync('myfile.json', JSON.stringify(j));
如果不从头开始编写完整的解析器,如何做到这一点呢?这取决于“微小的修改”。您是在添加新键还是仅仅修改值。主要是修改现有值。在我目前的具体案例中,我在树的较低级别添加了一些键,但我不关心这些键周围的键的顺序是否被保留,但我关心的是顶级键是否被保留。您是否进行了测试以确保在现实世界中它没有保留顺序?即使它确实保留了顺序,那么间距呢?当库特别不保证这种行为时,很难测试这样的东西。假设它对我机器上的一个给定文件有效…现在怎么办?在另一台机器上测试?不同版本的NodeJS?更大的文件?在什么情况下,我可以相信这种未记录的行为是可靠的?下一个版本的NodeJS呢?等