使用jQuery循环使用JSON

时间:2013-06-27 04:02:08

标签: jquery json each

我有一堆JSON数据,我想在页面上输出。我已经看到了很多关于如何设置(并且可以改变它)的变化,我不确定这是我正在做的最好的方式,但它在JSON linter中验证。

{
    "data": {

      "typeA": [
        {
          "name":"Thing 1",
          "link":"#"
        },
        {
          "name":"Thing 2",
          "link":"#"
        }
      ],

      "typeB": [
        {
          "name":"Thing iii",
          "link":"#"
        }
      ],
      "typeC": [
        {
          "name":"Thing iv",
          "link":"#"
        }
      ]

    }
}

我试图在自己的.js文件中使用这个JSON,但实际上有更多的运气将它保存在文档中(无论如何它是一个单页的网站) - 通过“更多运气”我的意思是当我只有typeA时,我有工作。

稍后在文档中准备好我有以下jQuery - 执行时告诉我数据未定义。

$.each(data, function(i, v) {
    $('#output').append("<p><a href='" + v.link + "'>" + v.name + "</a></p>");
});

我确定我在这里错过了一些大事!我喜欢以下内容:

  1. 关于我需要做些什么才能完成这项工作的一些线索 - 理想情况下我可以将typeA输出到#Output,输出类型B和其他类型的类型C,例如#output2
  2. 这里的东西或部分的一些定义/术语。我真的不知道我在这里不知道什么,并希望更多地阅读这篇文章!
  3. 由于

2 个答案:

答案 0 :(得分:1)

在假设data是引用上述对象的变量的情况下,您需要遍历data.data,因为外部对象只有一个名为data的键,其中包含类型。< / p>

然后像typeA这样的类型值又是一个数组,所以要访问像link这样的值,你需要使用v[0].link访问数组的第一个索引

您需要使用

$.each(data.data, function(i, v) {
    $('#output').append("<p><a href='" + v[0].link + "'>" + v[0].name + "</a></p>");
});

演示:Fiddle

答案 1 :(得分:0)

尝试beloe代码

$(json['data']).each(function (index, value) {
        for (i in value) {
            $(value[i]).each(function (i, v) {
                alert(v['name']);
                alert(v['link']);
            });
        }
    })

小提琴http://jsfiddle.net/xppxZ/1/