如何在ajax成功函数中访问多维json数组

时间:2014-03-12 11:31:43

标签: jquery ajax arrays json

详细信息:

有一个美好的一天程序员。我的服务器正在返回多维json数组。现在我只是想单独访问它,而且我对JSON格式有点困惑。

问题1:这些Type1和Type2 json格式有什么区别?

JSON Type 1

{
    "name": "Stackoverflow",
    "exp": "4month",
    "status": 
             {
               "username": "koushik",
               "password": "mypassword"
             }
}

JSON Type 2

{
    "name": "Stackoverflow",
    "exp": "4month",
    "status": [
        {
            "username": "koushik",
            "password": "mypassword"
        }
    ]
}

我知道两者都是有效的json格式,但它们的区别在哪里?

问题2:使用ajax我可以处理单维json数据

示例:可行

$.ajax({
        url:"temp.json",
        dataType:"json",
        success:function(data){     
                 alert(data.name);
        }
    }); 

以同样的方式我如何处理多维json数组。例如我想得到类似警告(data => status => username)的内容。我知道这很容易,但我很震惊。提前谢谢。

3 个答案:

答案 0 :(得分:4)

问题1:这些Type1和Type2 json格式有什么区别?

在第一个中,status属性引用一个对象(反过来又有两个属性)。在第二个中,status属性引用一个数组,第一个也是唯一一个元素是一个对象(又有两个属性)。

问题2:

对于你的" Type1"你可以这样做:

data.status.username

对于你的" Type2":

data.status[0].username

...或者如果是真实世界的情况" Type2"有一个包含更多对象的数组,你可以循环遍历这些项目并对它们做一些事情:

for(var i = 0; i < data.status.length; i++) {
    console.log(data.status[i].username);
}

答案 1 :(得分:1)

你需要这样的东西 -

$.each(data.status,function(i,v){
   console.log(v.username);
});

答案 2 :(得分:1)

if($.isArray(data.status)){
  // JSON Type 2
  $(data.status).each(function(){console.log(this.username);});

}
else
{
 //JSON Type 1
 console.log(data.status.username);
}