如何在JavaScript中获取包含'#'的JSON对象键的属性

4

我有一个由last.fm的API返回的JSON对象,如下所示:

{
    "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的建议也可以。有没有办法在对象的键中使用“#”来获取其值。

非常感谢您的帮助。

干杯:)


4
请注意,这个问题与JSON完全无关,它实际上是关于如何处理JavaScript中的数组/对象。你如何获取数据(例如通过JSON)与问题无关。 - Felix Kling
1
还可以查看访问/处理(嵌套)对象、数组或JSON - Felix Kling
2个回答

4
假设它在obj变量中,这将返回一个包含图像的数组。
var imgSrcArray = obj.artists.artist.image.map(function(image){ return image['#text'] });

ES6:

const imgSrcArray = obj.artists.artist.image.map( image => image['#text'] );

这就是全部内容。如果你想使用传统方式遍历这个数组,可以使用以下代码:
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
}

干杯


完美的 @edgar。非常感谢 :) - zambliner
很高兴能帮到你!来自玻利维亚拉巴斯,祝你好运! - Edgar Villegas Alvarado

3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接