2014-02-05 5 views
0

last.fm에서 일부 데이터를 가져 오려고합니다. 변수로 #text을 가지고 등등# 기호가있는 javascript 객체 변수

{ 
"tracks": { 
    "track": [ 
     { 
      "name": "Once Upon a Dream", 
      "duration": "203", 
      "loves": "738", 
      "mbid": "92078817-2e04-4bcd-9c43-ebb9c2d1823c", 
      "url": "http://www.last.fm/music/Lana+Del+Rey/_/Once+Upon+a+Dream", 
      "streamable": { 
       "#text": "0", 
       "fulltrack": "0" 
      }, 
      "artist": { 
       "name": "Lana Del Rey", 
       "mbid": "b7539c32-53e7-4908-bda3-81449c367da6", 
       "url": "http://www.last.fm/music/Lana+Del+Rey" 
      }, 
      "image": [ 
       { 
        "#text": "http://userserve-ak.last.fm/serve/34s/96432461.png", 
        "size": "small" 
       }, 
       { 
        "#text": "http://userserve-ak.last.fm/serve/64s/96432461.png", 
        "size": "medium" 
       }, 
       { 
        "#text": "http://userserve-ak.last.fm/serve/126/96432461.png", 
        "size": "large" 
       }, 
       { 
        "#text": "http://userserve-ak.last.fm/serve/300x300/96432461.png", 
        "size": "extralarge" 
       } 
      ] 
     } 

그리고 ...

응답의 이미지 부분에 액세스하려고 할 때 문제가있다

, 이미지 객체가 보인다

나는 다음과 같은 답변을 얻을 액세스하려는 정보의 이름입니다. 보통 response.tracks.track[i].image[0].text은 분명히 작동하지 않습니다.

이 변수에 액세스하는 특별한 방법이 있습니까?

답변

3

당신과 같이 그 변수에 액세스 the square bracket notation를 사용할 수 있습니다

response.tracks.track[i].image[0]['#text'] 
+0

오 세상에, 나는 그 다음에 시도 했어야 했어. 이것에 많은 시간을 나는 짐작한다. 고마워! – Crimson

+0

나는 그 감정을 안다. 때로는 휴식을 취하고 돌아와야 할 때가있다. 다행히 도울 수있어. – KylePlusPlus

2

그것은 개체의 내부 단지 키 이름입니다. 유효하지 않은 문자가 포함되어 있기 때문에 점 표기법을 사용하여 액세스 할 수 없지만 대괄호 표기법을 사용할 수 있습니다. 이것을 보여주는 아주 간단한 예가 있습니다.

var foo = { 
    '#bar': 'http://www.google.com/' 
} 

foo['#bar'] // will return a string value of http://www.google.com/ 

키에 잘못된 문자가 포함되어 있으면 문자열로 묶어야합니다. 귀하의 경우 항상 문자열로 묶인 키 이름을 포함하는 JSON 응답을 얻게됩니다.

희망이 도움이됩니다.

+0

더 적절한 스택 오버 플로우 사용법을 알 수는 없지만, 누군가가 변수에 그러한 이름을 부여하는 특별한 이유가 있습니까? – Crimson

+0

나는 속성 이름에 더 많은 의미를 부여하는 것 이외의 다른 말을해야 할 것이다. JavaScript 객체 * (** 작은 따옴표 또는 큰 따옴표 **로 묶여있는 한)에서 속성 이름에 사용할 이름을 기술적으로 사용할 수 있음을 의미합니다. * 단점은 점 표기법을 사용할 수 없다는 것입니다. 더 이상 그 값에 액세스 할 수 없습니다. 누군가가 대괄호 표기법을 사용하도록 강요합니다.이 표기법은 어디에서 오는 것인지 알지 못하면 누군가가 읽는 것을 혼란스럽게 할 수 있습니다 (예 : 배열로 생각). – W3Geek