显示遍历对象的JSON值

时间:2013-03-17 12:57:03

标签: jquery json

为什么这不会在以下示例中显示任何内容?

$.getJSON('test.json', function (data) {
 $.each(data.glossary, function (index, val){
    var title = val.title, //"example glossary"
    term  = val.GlossDiv.GlossList.GlossEntry.GlossTerm; //"Standard Generalized Markup Language"
        $('ul#results').append('<li><div class="name">' +this.title+ '</div></li><li><div class="name2">' +term+ '</div></li>');
    });
});

我必须遍历该对象才能从复杂的嵌套JSON数据文件中获取某些值,如下所示:

{
"glossary": {
    "title": "example glossary",
    "GlossDiv": {
        "title": "Hello!!",
        "GlossList": {
            "GlossEntry": {
                "ID": "SGML",
                "SortAs": "SGML",
                "GlossTerm": "Standard Generalized Markup Language",
                "Acronym": "SGML",
                "Abbrev": "ISO 8879:1986",
                "GlossDef": {
                    "para": "A meta-markup language, used to create markup languages such as DocBook.",
                    "GlossSeeAlso": ["GML", "XML"]
                },
                "GlossSee": "markup"
            }
        }
    }
}
} 

2 个答案:

答案 0 :(得分:1)

由于您正在迭代data.glossary,因此您的第一次迭代具有以下内容:

index == "title"
val == "example glossary";

val.title只是未定义,但val.GlossDiv.GlossList.GlossEntry.GlossTerm无法访问,应该在您的控制台中抛出错误。

看起来你不需要$.each

答案 1 :(得分:0)

您的每个功能都会被调用两次,一次用于标题,一次用于光泽列表。你使用它的方式看起来像是你希望词汇表是一个数组?