解析数组中的JSON数组

时间:2011-10-05 22:16:40

标签: jquery json

我有以下代码在我的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);
    });​
});

4 个答案:

答案 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属性是一个数组,但它不是用作数组,它包含一个看起来像数组的对象,但不是。

对象中名为01的属性具有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值。