2

我已经解析了 json 字符串,并且正在尝试访问这些元素。我无法访问链接 1、链接 2、链接 3

{
"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 数据 = $.parseJSON(dbData);

我可以使用以下方式访问 click_title 和 commonlink:-

data.click_title
data.links['commonlink']

但无法访问链接1、链接2、链接3。我试过

data.links['alllinks'] which returns [object Object]. 

如果我尝试

data.links['alllinks']['link1'] i get undefined
4

1 回答 1

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][0]

于 2013-03-30T14:28:57.447 回答