Multidim json数组javascript,如何获取值

时间:2012-08-08 11:16:25

标签: javascript jquery

我从AJAX调用得到了这个数据响应:

{"18:00":{"twopersons":1,"fourpersons":0}}

statsarray = data;

存储到变量中

现在我如何循环显示statsarray并输出twopersons值?

所以我可以提醒:

18:00 - There's 2 x 2persons and 0 x 4persons

这是Ajax调用:

var statsarray;
var currentloopeddate = test_date.toString('yyyy-MM-dd')
$.post("/home/sessions",
    { action: 'partner_calendar_checkseats', date: currentloopeddate },
    function(data) { statsarray = data; }
);

3 个答案:

答案 0 :(得分:2)

请执行以下操作:

var twopersons = data["18:00"].twopersons;
var fourpersons = data["18:00"]["fourpersons"];

(两种变体都是可能的)

变体是:

var shorter = data["18:00"];
var twopersons = data.twopersons;
// ...

答案 1 :(得分:1)

类似的东西:

var tst = {"18:00":{"twopersons":1,"fourpersons":0}};
for(k in tst) {
  for(var z in tst[k]) {
   console.log(k + ": Theres "+tst[k][z] + " X " + z);
  }
}

答案 2 :(得分:0)

您可以尝试这样的事情:

更新:更好的例子

var statsarray = {"18:00":{"twopersons":1,"fourpersons":0}};

var hour, persons, line, array;
for (hour in statsarray) {
    if (statsarray.hasOwnProperty(hour)) {
        array = [];
        for (persons in statsarray[hour]) {
            if (statsarray[hour].hasOwnProperty(persons)) {
                array.push(statsarray[hour][persons] + " x " + persons);
            }
        }
        line = hour + " - There's " + array.join(' and ');
        alert(line);
    }
}

请参阅:DEMO

不幸的是,您必须使用.hasOwnProperty进行测试,以确保它可以与某些库一起使用。

更新:您已在问题中添加了AJAX调用中的代码,我注意到您在回调函数中声明了statsarray变量 ,但是为回调中的变量内部分配一些值。请记住,你必须在AJAX回调函数中运行你的迭代代码 ,你有:statsarray = data; - 就在这一行之后,确保你实际拥有一些值要迭代。