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))