1

这是我的 json 对象:

var home = "[{\"id\":\"1\",\"img\":\"assets\\\/1.jpg\",\"headline\":\"This is the headline in the pedu.\",\"text\":\"To the ipedu\"},{\"id\":\"2\",\"img\":\"assets\\\/2.jpg\",\"headline\":\"This is the headline in the pedulence.\",\"text\":\"To the pendula\"}]";

当我尝试像这样遍历对象时:

$.each(home, function() {
    console.log(this);
});

我记录了每个字符而不是整个字符串。

示例:字符串 {0:"["} localhost:317 字符串 {0:"{"} localhost:317 字符串 {0:"""} localhost:317 字符串 {0:"i"} localhost:317 字符串 {0: "d"} localhost:317 字符串 {0:"""} localhost:317 字符串 {0:":"} localhost:317 字符串 {0:"""} localhost:317 字符串 {0:"1"} 本地主​​机: 317 字符串 {0: """} 本地主​​机:317 字符串 {0: ","} 本地主​​机:317 字符串 {0: """} 本地主​​机:317 字符串 {0: "i"}

我究竟做错了什么?如何循环遍历对象?

4

2 回答 2

2

首先,您拥有的不是 JSON 对象;它是一个包含根据 JSON 规范的对象表示的字符串。

要将该字符串转换为预期的对象,您必须首先使用$.parseJSON().

TL;博士

改变这个:

$.each(home, function() {
    console.log(this);
});

到:

$.each($.parseJSON(home), function() {
    console.log(this);
});
于 2012-11-19T14:23:37.090 回答
0

这是因为 home 是一个字符串。我假设您打算使用对象文字语法(例如作为数组)声明它:

var home = [{\"id\":\"1\",\"img\":\"assets\\\/1.jpg\",\"headline\":\"This is the headline in the pedu.\",\"text\":\"To the ipedu\"},{\"id\":\"2\",\"img\":\"assets\\\/2.jpg\",\"headline\":\"This is the headline in the pedulence.\",\"text\":\"To the pendula\"}];
于 2012-11-19T14:22:38.703 回答