使用jquery遍历json对象数组

时间:2013-02-01 02:06:54

标签: javascript jquery json

我知道这对你们中的一些人来说似乎很基本,但我试图迭代一个json对象。我道歉,因为我似乎很难得到各种各样的例子。我还阅读了jQuery文档,其中列出的json示例与我的json结构不太匹配。

这是我的示例的链接,它在控制台中显示“null”,我希望看到“1”。我只是想在json数组中打印出每个“node”的article_id元素。

http://jsfiddle.net/zZjfj/1/

var json = [
    [{
        "article_id": 1,
            "article_title": "test",
            "article_content": "test1"
    }, {
        "article_id": 2,
            "article_title": "test2",
            "article_content": "this is a second test article"
    }]
];

$.each(json, function (arrayID, group) {
    console.log(group.article_id);
});

3 个答案:

答案 0 :(得分:5)

你的json不是一个对象数组,它是一个对象数组的数组

当您输入迭代时,对于每个元素, arrayID 是索引(0,1等等...),组是子数组。

要解决您的问题,请在代码中使用json [0]代替json

$.each(json[0], function (arrayID, group) {
    console.log(group.article_id);
});

答案 1 :(得分:1)

您的对象'json'是一个包含1个元素的数组,它本身就是一个包含2个元素的数组。如果您将示例更改为:

var json = [
    { "article_id": 1,
      "article_title": "test",
      "article_content": "test1" },
    { "article_id": 2,
      "article_title": "test2",
      "article_content": "this is a second test article" }
  ];

然后它产生文章ID:1,2。

如果需要迭代二维数组,则可以使用嵌套循环:

$.each(json, function (idx1, entry) {
  $.each(entry, function (idx2, group) {
      console.log(group.article_id);
  });
});

答案 2 :(得分:1)

你有一个嵌套在另一个数组中的数组。您可能想看看您的JSON是如何输出的,但与此同时它可以通过另一个迭代级别轻松解决:

$.each(json, function (arrayID, group) {
    $.each(group, function (arrayID, group) {
        console.log(group.article_id);
    });
});

http://jsfiddle.net/zZjfj/2/

我创建了一个脚本,允许您在JSON中查看值的路径:http://jsfiddle.net/ExplosionPIlls/zEBZr/1/