2013-04-29 2 views
1

Я создаю список, получая значения из файла JSON. Это вложенный JSON, а элементы списка - «Thriller», «Fiction», которые в основном являются ключами для следующего уровня. по щелчку элемента Я передаю его имя (т. Е. Триллер/вымысел) на другую функцию ... var val = триллер.получить значение от json, когда переданный ключ является переменной

Теперь мне нужно получить значение (т. Е. «Книга» & имя книги), соответствующее переданному ключу в этой новой функции. Я не в состоянии сделать это, используя точку operator- 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

ответ

1

Ваш Json является не действует, это },] специально. Хороший вариант:

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

вы можете обратиться на веб-сайте http://jsonlint.com для проверки вашего JSON.

Смежные вопросы