Json键有'#'特殊字符

时间:2017-11-05 14:11:47

标签: javascript json api web getjson

目前我需要图像的URL,我通过JSON文件获取它。由于密钥在开始时具有#,我不确定是否获取具有URL的密钥。这是JSON:

{  
 "#text":"https://lastfm-img2.akamaized.net/i/u/34s/3ed37777196a6f2c29c02a1a58a93e4d.png",
 "size":"small"
},
{  
 "#text":"https://lastfm-img2.akamaized.net/i/u/64s/3ed37777196a6f2c29c02a1a58a93e4d.png",
 "size":"medium"
}

1 个答案:

答案 0 :(得分:3)

每次遇到一些JSON字符串时都一样!

#是属性名称中的无效字符,解决方法是括号:«object»[property] - > «array»[index]['#text']

我们可以使用forEach来提取结果。



var string = '[{"#text":"https://lastfm-img2.akamaized.net/i/u/34s/3ed37777196a6f2c29c02a1a58a93e4d.png","size":"small"},{"#text":"https://lastfm-img2.akamaized.net/i/u/64s/3ed37777196a6f2c29c02a1a58a93e4d.png","size":"medium"}]';

var parsed = JSON.parse(string);

//parsed is an array, we can loop over it
parsed.forEach(function(obj) {
      console.log(obj['#text']);
});




如果您可以根据尺寸从阵列中进行选择,那就更漂亮了:



var string = '[{"#text":"https://lastfm-img2.akamaized.net/i/u/34s/3ed37777196a6f2c29c02a1a58a93e4d.png","size":"small"},{"#text":"https://lastfm-img2.akamaized.net/i/u/64s/3ed37777196a6f2c29c02a1a58a93e4d.png","size":"medium"}]';

function getImageUrlBySize(size, json) {
  var parsed = JSON.parse(json);
  return parsed.find(function(element) { //modern browsers only (no IE)
      return element['size'] == size;
  })['#text']; //add text here since find returns the full item
}

console.log(getImageUrlBySize('small', string));