在保留对象键顺序的同时修改 JSON 文件

Ste*_*ett 5 json object node.js

在 NodeJS 中解析 JSON 文件,对其进行微小修改,然后将其写回磁盘,而不更改其中任何对象的任何键的顺序的好方法是什么?

为了解决常见的问题“但 JSON 并不能保证密钥顺序!你所做的不是 JSON!你会破坏所有人的互联网!”:

  • 人类经常处理 JSON 配置文件。即使关键顺序对程序没有意义,他们也可能以某种方式组织它并且不希望看到这种移动。
  • JSON 文件通常提交到源代码控制中。无故更改密钥顺序会导致修订历史垃圾邮件。
  • JSON 文件通常用于互操作性。仅仅因为我的程序是纯粹的、神圣的并且符合标准并不意味着它与之交互的其他程序是。

所以:显然这还不够:

var j = require('myfile.json');
...
fs.writeFileSync('myfile.json', JSON.stringify(j));
Run Code Online (Sandbox Code Playgroud)

如果不从头开始编写完整的解析器,如何做到这一点?