需要读取json文件,并将修改后的更改写回文件末尾。例如:
//original
{"k1": "v1", "k4": "v4"}
做一些魔术并得到:
//output
{"k1": "v1", "k4": "v4", "k2": "v2"}
这里最大的问题是JSON.stringify()
/ JSON.parse()
期间parse
/ stringify
的调用不能保证json jey的顺序-因此json被读入无序映射并写入再次进入无序地图。
可以和javascript一起使用吗?
答案 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
之后重新组装对象。