从json对象获取密钥名称

ped*_*ete 5 jquery json key

这与json获取关键名称作为文本的问题几乎完全相同,但这种反应对我不起作用.

我有一个json对象

{"userList":[
{"user1":[{"username":"mike","memberSince":"01/03/2011"}]},
{"user2":[{"username":"john","memberSince":"01/05/2011"}]},
]}

我拥有"user1"和"user2"标签的唯一原因是因为我将用户列表通过userId存储在jQuery数据中,然后对其进行字符串化以将其放入cookie中并将其发送到另一个页面中.我知道,听起来很愚蠢,但我只是在构建一些前端的东西来证明一点,然后才能正确地使用db.

所以

jQuery('div#userList').data('user1',user1JSON);

变成

{"user1":[{"username":"mike","memberSince":"01/03/2011"}]}

使用时

var userlist=JSON.stringify(jQuery('div#userList').data());

因此,用户信息现在是userId的子级,而不仅仅是用户列表的子级.

为了获得用户信息,我应该可以说

for(u=0;u<userList.length;u++){
   var userInfo=userList[u][0];
}

但不幸的是,这只是给我一个未定义的错误.如果我使用

var userInfo = userList[u]['user1'];

我正确地获得了用户信息.

所以,有人可以纠正我为什么userList [u] [0]不起作用,或者

向我解释如何使用JSON.stringify而不将userid添加到字符串的开头?

Gab*_*oli 7

那是因为userList[u]返回一个对象,而不是一个数组.

并且您无法使用索引访问对象属性.

你可以试试

for(u=0;u<userList.length;u++){
   for (var user in userList[u])
        {
          // user is the key
          // userList[u][user] is the value
          var userInfo=userList[u][user];
        }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用jQuery每个函数进行迭代.

data=obj.userList
jQuery.each(data, function(key,value){
  var username=value.username;
  var memberSince=value.memberSince;
  ...
}
Run Code Online (Sandbox Code Playgroud)