tom*_*ods 4 javascript arrays ajax jquery
我正在尝试使用通过电子邮件排序的JSON响应对象来填充选择框,但JQuery似乎正在将键的类型从文本更改为整数,因此通过现在的数字索引重新排序响应对象,搞砸了选择框的顺序.
所以json的反应如下:
{"2":"aaron@mail.com","1":"bernard@mail.com"}
Run Code Online (Sandbox Code Playgroud)
在代码类似于:
$.getJSON('urlwithjsonresponse.com',function(response){
console.log(response);
});
Run Code Online (Sandbox Code Playgroud)
输出这样的对象:
{1:"bernard@mail.com",2:"aaron@mail.com"}
Run Code Online (Sandbox Code Playgroud)
如何防止此转换/重新排序?
Ps也会出现$ .ajax
这里有两件事是错的.
1)JSON密钥总是字符串.仅仅因为它是没有引号而写的并不是一个数字.它只是意味着密钥名称是"安全的",即不包含空格或其他特殊字符.
2)绝对不能保证JSON散列密钥具有任何特定顺序.如果你期待它们,那么你的期望是错误的.您应该将数据序列化为对象(或字符串)数组,而不是单个哈希对象.
["bernard@mail.com","aaron@mail.com"]
要么
[{key:1,value:"bernard@mail.com"},{key:2, value:"aaron@mail.com"}]
实际上做了三件事
3)你看到的输出与jQuery无关.这就是console.log()你给它的序列化哈希对象的方式.哪个有效(见#2).