Javascript 防止JSON.parse重新改变对象的范围

Javascript 防止JSON.parse重新改变对象的范围,javascript,arrays,json,object,Javascript,Arrays,Json,Object,在我的web应用程序中,我从服务器接收一个JSON字符串,该字符串保存在问候语变量中: var greetings = '{"2":"hoi","3":"hi","1":"salam"}' 请注意问候语是如何以索引2和值hoi开头的。 现在我想解析JSON,结果如下: JSON.parse(greetings) // {1: "salam", 2: "hoi", 3: "hi"} 顺序已更改,似乎JSON.parse按键对结果进行排序 有没有办法保持原始字符串的顺序不变?通常不能依赖对象中索

在我的web应用程序中,我从服务器接收一个JSON字符串,该字符串保存在问候语变量中:

var greetings = '{"2":"hoi","3":"hi","1":"salam"}'
请注意问候语是如何以索引2和值hoi开头的。 现在我想解析JSON,结果如下:

JSON.parse(greetings) // {1: "salam", 2: "hoi", 3: "hi"}
顺序已更改,似乎JSON.parse按键对结果进行排序


有没有办法保持原始字符串的顺序不变?

通常不能依赖对象中索引的顺序。改为使用键/值对数组

正如您所看到的,键被解析为(数字)索引,这就是它们按这种方式排序的原因。您可以通过在密钥前加前缀,然后在以后剥离这些密钥来解决此问题:


console.log(JSON.parse(“{”i2:“hoi”,“i3:“hi”,“i1:“salam”}”)
通常不能依赖对象中索引的顺序。改为使用键/值对数组

正如您所看到的,键被解析为(数字)索引,这就是它们按这种方式排序的原因。您可以通过在密钥前加前缀,然后在以后剥离这些密钥来解决此问题:

console.log(JSON.parse('{“i2”:“hoi”,“i3”:“hi”,“i1”:“salam”}'))
不是数组,而是数组。对象没有任何顺序。 如果订单很重要,则需要切换到实际订单

不是数组,而是数组。对象没有任何顺序。
如果顺序很重要,则需要切换到实际顺序。

如果需要特定顺序,则使用数组而不是对象。JSON是无序的structure@Héctor对象是无序的数据结构…不,您不能,因为迭代通常是按插入顺序进行的,但是可以作为索引读取的键首先被读取并按升序排序structure@Héctor对象是无序的数据结构…不,您不能,因为迭代通常是按插入顺序进行的,但可以作为索引读取的键是先读取并按升序排序的。这是错误的。。。你可能会称之为POJO。从ES6/ES2015开始,有一个命令:@Patrick I用正确的术语和更好的链接更新了你的答案。混淆JSON和对象是一个非常常见的错误(称之为“JSON对象”,这是错误的)。但至少现在我们知道人们是从哪里得到的…@str:1。升序整数,2。按创建顺序排列的字符串(但不是整数),3。符号按创建顺序排列-所有案例都有一个顺序,但这是错误的。。。你可能会称之为POJO。从ES6/ES2015开始,有一个命令:@Patrick I用正确的术语和更好的链接更新了你的答案。混淆JSON和对象是一个非常常见的错误(称之为“JSON对象”,这是错误的)。但至少现在我们知道人们是从哪里得到的…@str:1。升序整数,2。按创建顺序排列的字符串(但不是整数),3。按创建顺序排列的符号-所有案例都有一个顺序
{
   "2":"hoi",
   "3":"hi",
   "1":"salam"
}