将json对象转换为关联数组

时间:2011-06-02 06:12:20

标签: javascript json associative arrayobject

我有一个由json_encode()检索的数组。当我执行

$.getJSON('beta.php' , function(data){
    console.log(data);
});

我得到的结果如下

[
Object { StuId="1", fName="Saman", more...},
Object { StuId="2", fName="Marry", more...},
Object { StuId="3", fName="Navjoth", more...},
Object { StuId="4", fName="Jassu", more...}
]

我正在尝试使用

迭代这个结果
$.each(data, function(key, value){

            for(var key in value){

                if(value.hasOwnProperty(key)){                  

                        $("#article tbody").html(                       
                        "<tr><td>" + value.StuId + 
                        "</td><td>" + value.fName + 
                        "</td><td>" + value.lName +
                        "</td><td>" + value.age +
                        "</td><td>" + value.grade + 
                        "</td></tr>");

                        $("article tbody").appendTo("document.body");               

                }

                }

        });

。我猜这是不可能的,因为上面的数组格式。

如果有人可以解释为什么会发生这种情况以及如何纠正它,我将非常感激。我想知道如何将上述内容转换为以下格式。

[
{"StuId":"1","fName":"Saman","lName":"Kumara","age":"14","grade":"A"},
{"StuId":"2","fName":"Marry","lName":"Vass","age":"12","grade":"B"},
{"StuId":"3","fName":"Navjoth","lName":"Bogal","age":"32","grade":"A"},
{"StuId":"4","fName":"Jassu","lName":"Singh","age":"22","grade":"E"}
]

2 个答案:

答案 0 :(得分:2)

每次都会用不同的值覆盖表格html。

$(document).ready(function() {
  var html = "";
  var data = [
          { StuId:"1", fName:"Saman"},
          { StuId:"2", fName:"Marry"},
          { StuId:"3", fName:"Navjoth"},
          { StuId:"4", fName:"Jassu"}
          ]
  $.each(data, function(key, value){
    console.log(value + "--" + key);
    html += "<div><span>" + value.StuId + "</span><span>" + value.fName + "</span></div>";
  });
  $('body').html(html)
});

JavaScript中的循环与其他语言不同。你需要关闭。

看看这里:

http://www.mennovanslooten.nl/blog/post/62

答案 1 :(得分:0)

基础对象是一个javascript数组,所以你不能:

$.each(data, function(item) {
    var html = "<tr><td>" + item.StuId + "</td><td>" + item.fname + "</td></tr>";
    // etc.
});