如何在javascript(nodejs)中使用订单garantee读取json文件?

时间:2019-05-14 13:34:12

标签: javascript node.js json

需要读取json文件,并将修改后的更改写回文件末尾。例如:

//original
{"k1": "v1", "k4": "v4"}

做一些魔术并得到:

//output
{"k1": "v1", "k4": "v4", "k2": "v2"} 

这里最大的问题是JSON.stringify() / JSON.parse()期间parse / stringify的调用不能保证json jey的顺序-因此json被读入无序映射并写入再次进入无序地图。

可以和javascript一起使用吗?

2 个答案:

答案 0 :(得分:0)

使用JSON.parse中的reviver argument记住按键顺序,然后使用它通过JSON.stringify的{​​{3}}重新建立按键顺序:

let src = '{"y":1,"z":2,"x":3}'
let keysOrder = []
JSON.parse(src, (key, value) => {keysOrder.push(key); return value})
let res = JSON.stringify({z: 1, y: 2, x: 3}, keysOrder)
console.log(res)

答案 1 :(得分:-1)

Javascript中的“地图/对象”属性是无序的。所以直接的答案是:你不能。

现在,您可以尝试使用数组来缓解这种情况:

[{"k1": "v1"}, {"k2": "v2"}, etc...]

您可以在stringify之前创建并排序此数组,并在parse之后重新组装对象。