显示遍历对象的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"
            }
        }
    }
}
} 

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

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

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

看起来你不需要$.each

您的每个函数将被调用两次,一次用于title,一次用于glosslist。您使用它的方式看起来像您希望glossary是一个数组?

最新更新