2009-08-07 3 views
1

Bit.ly JSON 응답에서 shortUrl을 추출하려고합니다. 문제는 응답에 포함 된 원래 URL이 점 표기법을 사용하여 응답을 통과하지 못하는 것입니까? 나는 다른 속성 (errorCode, errorMessage 등)을 얻을 수는 있지만, URL의 결과로 인해 아무것도 얻을 수 없다. 내가 빠진 것이 있습니까? JavaScript에서 JSON 응답을 구문 분석 Bit.ly JSON 응답 (json 응답의 URL)

는 반응이다 :

{ 
    "errorCode": 0, 
    "errorMessage": "", 
    "results": { 
     "http://www.google.com/": { 
      "hash": "2V6CFi", 
      "shortKeywordUrl": "", 
      "shortUrl": "http://bit.ly/1F5ewS", 
      "userHash": "1F5ewS" 
     } 
    }, 
    "statusCode": "OK" 
} 

답변

2

자바 오브젝트는 속성 이름도 유효한 JavaScript 식별자 인 경우에만 경우 점 표기법 (obj.property) 통해 액세스 될 수있다. 당신의 예에서

하는 URL이 유효한 식별자가 명확하지 않기 때문에, 당신은 다른 방법, 배열 스타일 액세스 (obj[property])를 사용할 수 있습니다 :

var obj = { 
    yahoo: 5 
    'http://www.google.com':10 
}; 

// Both of these work just fine. 
var yahoo = obj.yahoo; 
var google = obj['http://www.google.com']; 
0
var responseAsJSON = eval(jsonString); 
alert(responseAsJSON.shortUrl); 
1

eval는 JSON을 구문 분석 작동하지만, 그것은 좋아하는 어떤 코드를 실행할 수있는 JSON 파일을 수 있기 때문에 종종 안전하지 않은 것으로 간주됩니다. This question에서 이유를 설명하고 JSON을 구문 분석하는 좀 더 안전한 방법을 나타냅니다.

0

샘플 JSON 개체에서 "http://www.google.com/"이 "결과"와 같은 하위 개체의 이름이 될 것으로 예상됩니다. 대신 "http://www.google.com/"을 "link"로 바꿨다고 가정 해 보겠습니다. 그런 다음 this (response.results.link.shortUrl)와 같은 "shortUrl"을 참조 할 수 있으며 "http://bit.ly/1F5ewS"을 반환합니다.

0

시도이 하나

var myJSONResponse = { "errorCode": 0, "errorMessage": "", "results": { "http://www.google.com/": { "hash": "2V6CFi", "shortKeywordUrl": "", "shortUrl": "http://bit.ly/1F5ewS", "userHash": "1F5ewS" } }, "statusCode": "OK" }; 

VAR theShortURL myJSONResponse.results = [ "http://www.google.com/"] .shortUrl;

theShortURL은 결과로 http://bit.ly/1F5ewS입니다.