我有一堆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>");
});
我确定我在这里错过了一些大事!我喜欢以下内容:
由于
答案 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']);
});
}
})