2013-04-29 60 views
1

我正在通过从JSON文件中提取值来创建一个列表。它是一个嵌套的JSON,列表项是 - “颤栗”,“小说”,它们基本上是下一关键。 点击此处我将它的名字(即Thriller/fiction)传递给另一个功能的项目... var val =惊悚片。传递时从json获取值key是一个变量

现在我需要获取与此新函数中传递的键相对应的值(即“book”& bookname)。我不能这样做,使用点操作符 - data.library.val没有工作..

如果有人有东西合作similar..please帮助..

JSON:

{ "library": [ 

    { 
     "Thriller": [ 
      { "book": "ABC" }, 
      { "book": "DEF" } 
     ] 
    }, 
    { 
     "Fiction": [ 
      { "book": "GHI" }, 
      { "book": "JKL" } 
     ] 
    },] } 

代码片段:

$.getJSON('resources/abc.json', function(data){ 

     var i = data.library; 
     $("#menuList1").css('display','block'); 
     $(i).each(function(key, value){ 
      $.each(value, function(key, value){ 
        console.log(key); 
        $("#menuList1").append('<a href="#" id="'+key+'" onClick="createSubMenu(id);">'+key+'</a>'); 
    });  
    }); }); 
+0

使用不相互冲突的变量名!让他们有意义,这样你就可以阅读他们,并知道你实际参考的内容。 – epascarello 2013-04-29 14:23:12

回答

1

您的JSON是无效,这},]特别。一个很好的版本:

{ 
    "library": [{ 
     "Thriller": [{ 
      "book": "ABC" 
     }, { 
      "book": "DEF" 
     }] 
    }, { 
     "Fiction": [{ 
      "book": "GHI" 
     }, { 
      "book": "JKL" 
     }] 
    }] 
} 

您可以参阅网站http://jsonlint.com用于验证您的JSON。