我有以下代码在我的JSON中获取名为'feeds'的数组中的第一个'name',我现在想循环遍历JSON并获取每个名称。我无法让这个循环起作用。
JSON:
{
"title": "Testing",
"created_at": "2011-10-05T16:23:26.217Z",
"feeds": [{
"0": {
"name": "twitter",
"key": "person1"
},
"1": {
"name": "twitter",
"key": "person2"
},
"_id": "4e8c847e02edc10035000003"
}]
}
这成功获得第一个标题:
$.getJSON(getthisshit, function (myJson) {
var myfeed = myJson.feeds[0][0].name;
alert(myfeed);
});
我试图循环执行这样的事情,但却无法让它发挥作用:
$.getJSON(getthisshit, function (myJson) {
$.each(myJson.feeds, function (i, item) {
alert(item.name);
});
});
答案 0 :(得分:1)
您的解决方案几乎是正确的,您只需迭代feeds
而不是feeds[0]
:
$.getJSON(getthisshit, function (myJson) {
$.each(myJson.feeds[0], function (i, item) {
// ^^^
alert(item.name);
});
});
答案 1 :(得分:0)
迭代所有元素,并写入控制台:
$.each(myJson.feeds, function (i, item) {
$.each(item, function(i, elem){
console.log('name: ' + elem.name + ', key: ' + elem.key);
});
});
在JSFiddle中尝试:http://jsfiddle.net/CUfnL/
答案 2 :(得分:0)
在构建
中使用for (var i in json.feeds[0]) alert(json.feeds[0][i].name);
答案 3 :(得分:0)
该数据的问题是feeds
属性是一个数组,但它不是用作数组,它包含一个看起来像数组的对象,但不是。
对象中名为0
和1
的属性具有name
属性的对象,但名为_id
的属性根本不是对象,因此没有name
财产。
我建议您将数据更改为类似这样的内容,其中feeds
数组的使用方式与数组类似,_id
属性不在对象内部以及其他具有名称的属性这是数字:
{
"title": "Testing",
"created_at": "2011-10-05T16:23:26.217Z",
"feeds": [
{
"name": "twitter",
"key": "person1"
},
{
"name": "twitter",
"key": "person2"
}
],
"_id": "4e8c847e02edc10035000003"
}
使用此数据,您的代码将按原样运行,当您尝试从undefined
字符串中读取name
属性时,您将不会获得_id
值。