我已经解析了json字符串,我正在尝试访问这些元素。我无法访问link1,link2,link3
{
"click_title":"GO",
"links":
{
"commonlink":"http:\/\/bookings.com",
"alllinks":
[
[
{
"link1":"http:\/\/xyz1.com\/get\/a",
"link2":"http:\/\/www.anotherwebsite1.com\/c\/t",
"link3":"http:\/\/www.newsite1.com\/v\/h"
},
{
"link1":"http:\/\/xyz2.com\/get\/a",
"link2":"http:\/\/www.anotherwebsite2.com\/c\/t",
"link3":"http:\/\/www.newsite2.com\/v\/h"
}
],
[
{
"link1":"http:\/\/xyz3.com\/get\/a",
"link2":"http:\/\/www.anotherwebsite3.com\/c\/t",
"link3":"http:\/\/www.newsite3.com\/v\/h"
}
]
]
}
}
var data = $ .parseJSON(dbData);
我可以使用以下方法访问click_title和commonlink: -
data.click_title
data.links['commonlink']
但无法访问link1,link2,link3。 我试过了
data.links['alllinks'] which returns [object Object].
如果我尝试
data.links['alllinks']['link1'] i get undefined
答案 0 :(得分:1)
结构很奇怪。 alllinks
是一个对象数组的数组(请注意[
之后的[
和第二个"alllinks":
,其中每个都启动一个数组)。要获取第一个数组中的第一个 link1
,您需要执行以下操作:
var link = data.links.alllinks[0][0].link1;
如果您一致地格式化JSON,则更容易看到。在这里我使用http://jsonlint.com来清理它,然后我添加了一些注释(不是注释在JSON中有效):
{
"click_title": "GO",
"links": {
"commonlink": "http://bookings.com",
"alllinks": [ // <== Starts the outer array
[ // <== Starts an inner array
{ // <== Starts the object that's the first entry
"link1": "http://xyz1.com/get/a",
"link2": "http://www.anotherwebsite1.com/c/t",
"link3": "http://www.newsite1.com/v/h"
},
{ // <== Starts the object that's the second entry
"link1": "http://xyz2.com/get/a",
"link2": "http://www.anotherwebsite2.com/c/t",
"link3": "http://www.newsite2.com/v/h"
}
], // <== Ends the first inner array
[ // <== Starts the second inner array
{
"link1": "http://xyz3.com/get/a",
"link2": "http://www.anotherwebsite3.com/c/t",
"link3": "http://www.newsite3.com/v/h"
}
] // <== Ends the second inner array
] // <== Ends the outer array
}
}
所以总共有三个link1
:[0][0]
上的对象上的那个,[0][1]
上的对象上的那个,以及{上的对象上的那个{1}}。