在我的Web应用程序中,我从服务器接收到一个JSON字符串,并将其保存在greetings变量中:
var greetings = '{"2":"hoi","3":"hi","1":"salam"}'
请注意问候语是如何以索引2和值hoi开头的。现在我想解析JSON,结果如下:
JSON.parse(greetings) // {1: "salam", 2: "hoi", 3: "hi"}
顺序发生了变化,看起来好像JSON.parse是按键对结果排序的。有没有办法保持原始字符串的顺序不变?
brgchamk1#
{ "2":"hoi", "3":"hi", "1":"salam" }
不是数组,而是object。对象没有任何顺序。如果顺序很重要,则需要切换到实际的array。
mefy6pfw2#
通常不能依赖于对象中索引的顺序。请使用键/值对的数组。正如你所看到的,键被解析为(数字)索引,这就是为什么它们是这样排序的。你可以通过给你的键加上前缀,然后在后面剥离它们来解决这个问题:
console.log(JSON.parse('{"i2":"hoi","i3":"hi","i1":"salam"}'))
2条答案
按热度按时间brgchamk1#
不是数组,而是object。对象没有任何顺序。如果顺序很重要,则需要切换到实际的array。
mefy6pfw2#
通常不能依赖于对象中索引的顺序。请使用键/值对的数组。
正如你所看到的,键被解析为(数字)索引,这就是为什么它们是这样排序的。你可以通过给你的键加上前缀,然后在后面剥离它们来解决这个问题: