2014-01-12 3 views
0

я объект JSON, возвращаемой апи из last.fm следующим образом:Как получить атрибут объекта JSON в JavaScript, содержащий «#» в ключевом

{ 
    "artists": { 
     "artist": { 
      "name": "Daft Punk", 
      "playcount": "494599", 
      "listeners": "106101", 
      "mbid": "056e4f3e-d505-4dad-8ec1-d04f521cbb56", 
      "url": "http://www.last.fm/music/Daft+Punk", 
      "streamable": "1", 
      "image": [ 
       { 
        "#text": "http://userserve-ak.last.fm/serve/34/5463.jpg", 
        "size": "small" 
       }, 
       { 
        "#text": "http://userserve-ak.last.fm/serve/64/5463.jpg", 
        "size": "medium" 
       }, 
       { 
        "#text": "http://userserve-ak.last.fm/serve/126/5463.jpg", 
        "size": "large" 
       }, 
       { 
        "#text": "http://userserve-ak.last.fm/serve/252/5463.jpg", 
        "size": "extralarge" 
       }, 
       { 
        "#text": "http://userserve-ak.last.fm/serve/500/5463/Daft+Punk.jpg", 
        "size": "mega" 
       } 
      ] 
     }, 
     "@attr": { 
      "page": "1", 
      "perPage": "1", 
      "totalPages": "1000", 
      "total": "1000" 
     } 
    } 
} 

Теперь я пытаюсь получить изображения с объекта, но ключ для URL-адреса изображения - "#text". Я не знаю, как это значение извлекается в Javascript. Я использую AngularJS, но любые предложения, использующие простой javascript, также являются okei. Есть ли способ, которым я могу использовать «#» в ключе объекта, чтобы получить его значение.

Любая помощь была бы принята с благодарностью.

Приветствия :)

+3

Пожалуйста, обратите внимание, что эта проблема не имеет ничего ** ** делать с JSON вообще. Речь идет о том, как обрабатывать массивы/объекты в JavaScript. * Как * вы получили данные (например, через JSON), не имеют отношения к проблеме. –

+1

Также взгляните на [Access/process (вложенные) объекты, массивы или JSON] (http://stackoverflow.com/q/11922383/218196). –

ответ

2

Если предположить, что это в obj вар, заносить бы массив с изображениями

var imgSrcArray = obj.artists.artist.image.map(function(image){ return image['#text'] }); 

это все.

если вы хотите classicaly пройти этот массив, с этим:

var images = obj.artists.artist.image; 
for(var i=0; i < images.length; i++){ 
    var image = images[i]; 
    var url = image['#text']; 
    console.log("url: ", url); //Outputs the img url 
} 

Приветствия

+0

Perfect @edgar. Большое спасибо :) – zambliner

+0

Рад, что это вам помогло !. Cheers, из Ла-Пас, Боливия –

0

foo['artists']['artist']['image'][0]['#text']

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