0

我已经解析了一个合法的 JSON 对象,我正在遍历多维数组,首先根据函数参数找到年份,然后是该年内的月份。

我的 for 循环是嵌套的:

    for (year in yearsData) {
        //If we've found the correct year...
        if (yearsData[year]['@attributes'].name == yearToGet) {

        //...walk through that year's child months
        for (month in yearsData[year]) {

            //This works!
            console.log(yearsData[year][month]);

            //This also works!
            console.log(yearsData[year][month]['@attributes']);

            //This does not work! ..but this is what I need!
            console.log(yearsData[year][month]['@attributes'].name);
        }       
   }

我可以一直跟踪 Firebug 控制台中的对象(具有有效输出)

console.log(yearsData[year][month]['@attributes']);

但是我在末尾添加类型的那一刻(.name):

yearsData[year][month]['@attributes'] 未定义。

console.log(yearsData[year][month]); 返回有效对象,我可以看到列出的有效@attributes。

我已经多次检查拼写;我已将属性的名称更改为其他名称,以防它与年份的属性发生某种冲突……但我什么也没得到。

我错过了什么简单的事情?

JSON:

{
"year": [
    {
        "@attributes": {
            "name": "2013"
        },
        "month": {
            "@attributes": {
                "name": "January"
            },
            "winner": "None!",
            "theme": "Nobody!"
        }
    }
]

}

4

2 回答 2

0

经过一番脑筋急转弯,结果证明它是一个超级笨蛋。我使用的是变量月份,而不是可以识别它的字符串“月份”。

我需要使用:console.log(yearsData[year]['month']['@attributes'].name);

为拿到它,为实现它。哇。

于 2013-03-05T21:29:36.530 回答
0

考虑使用 jQuery.grep 或 jQuery.each 高效地进行对象迭代和分析。它可以帮助很多。

http://api.jquery.com/jQuery.grep/

于 2013-03-05T19:22:03.997 回答