jQuery - анализ данных JSON - Проблемы с именем переменной - PullRequest
6 голосов
/ 05 августа 2009

Мой первый опыт работы с данными JSON. У меня есть небольшой опыт использования jQuery.

Я пишу по этому URL (tumblr api): jyoseph.com/api/read/json

То, что я пытаюсь сделать, это вывести возвращаемый json. Что у меня так далеко:

$(document).ready(function(){ 

$.getJSON("http://jyoseph.com/api/read/json?callback=?", 
  function(data) { 
    //console.log(data); 
    console.log(data.posts);         

      $.each(data.posts, function(i,posts){ 
        var id = this.id; 
        var type = this.type; 
        var date = this.date; 
        var url = this.url; 
        var photo500 = this.photo-url-500; 

        $('ul').append('<li> ' +id+ ' - ' +type+ ' - ' +date+ ' - ' +url+ ' - ' +photo500+ ' - ' + ' </li>'); 
      }); 

  }); 

});

Смотрите мой пост jsbin для всего скрипта: http://jsbin.com/utaju/edit

Некоторые ключи от Tumblr содержат дефисы "-", и это, похоже, вызывает проблемы. Как вы видите, «photo-url-500» или другой «фото-заголовок» вызывают сбой сценария, он выводит NaN.

Есть ли проблема с дефисами в именах ключей? Или я все об этом говорю не так?

Ответы [ 3 ]

20 голосов
/ 05 августа 2009

Если в именах есть тире, вам нужно получить к ним доступ по-разному. Измените var photo500 = this.photo-url-500; на var photo500 = this["photo-url-500"];.

3 голосов
/ 05 августа 2009

Обратите внимание, что лучше не добавлять внутри каждой итерации. Лучше добавить в строку или вставить в массив, а затем добавить один раз после завершения итератора. Присоединение к дому дорого.

1 голос
/ 05 августа 2009

Используйте скобку для доступа к членам:

var photo500 = this['photo-url-500']; 
...