【问题标题】:Converting a json object to an associative array将 json 对象转换为关联数组
【发布时间】:2011-06-02 06:12:20
【问题描述】:

我有这个由 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"}
]

【问题讨论】:

  • 你已经在这里问过类似的问题:stackoverflow.com/questions/6186339/…
  • 你已经得到了你想要的输出,到底哪里出了问题?? [] := 数组 {} :=对象
  • 非常抱歉。但我仍然无法得到我想要的东西。这就是我再次问它的原因。顺便说一句,我是整个 jQuery 主题的新手。
  • 那还是自学吧; (yahan tumhare q'n ka 对 mil jaega 的解决方案,但 tum kabhi seekh nahin paogi,sachhi!)
  • @diEcho,我当然会在这里得到答案,我也会以某种方式学习。sachhii

标签: javascript json associative arrayobject


【解决方案1】:

您每次都用不同的值覆盖表格 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

【讨论】:

  • 嗨,Christian,非常感谢 :) 这是循环关闭中的一个问题。现在我再次松了一口气:)
【解决方案2】:

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

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

?

【讨论】:

  • 我已经尝试过了。但这会输出一个只有一行的表,它会为所有值打印“未定义”。这就是我在阅读本论坛的帖子后使用 for in 循环的原因。它甚至没有打印表中的所有行。我也无法弄清楚为什么循环没有正确发生:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2011-05-19
  • 1970-01-01
相关资源
最近更新 更多