如何将JSON数字键的顺序保留在Nodejs中


var json = `{"3":0,"2":0,"1":0}`
var obj = JSON.parse(json)
console.log(JSON.stringify(obj))
console.log(json === JSON.stringify(obj))

输出

{"1":0,"2":0,"3":0}
false

我希望得到它

{"3":0,"2":0,"1":0}
true

如何做

这是因为json是解析后的对象,并且不能保证对象的键

您可以使用地图&它保证了密钥的顺序

这是不可能的。在ES6中,按键按以下顺序横穿:

  • 首先,按数字顺序升级的整数索引的键。

  • 然后,所有其他字符串键按将它们添加到对象的顺序中。

  • 最后,所有符号键按将它们添加到对象的顺序中。

无论插入的顺序如何,整数密钥都按升序排序

var a = {};
a[3] = "three"
a[2] = "two"
a[1] = "one"
console.log(JSON.stringify(a))

参考

您可能还需要阅读:JavaScript保证对象属性顺序?

您可以使用guid property的对象数组

const text = '[{"id":3,"value":0},{"id":2,"value":0},{"id":1,"value":0}]'
const json = JSON.parse(text)
console.log(JSON.stringify(json))

您可以将键花费一个点,通过iteratong,这些键处于原始插入顺序,但仅使用数字可以访问。这也需要一个点。

var json = `{"3.":0,"2.":0,"1.":0}`
var obj = JSON.parse(json)
console.log(obj[2])
console.log(JSON.stringify(obj))
console.log(json === JSON.stringify(obj))

最新更新