2009-08-07 4 views
1

Я пытаюсь извлечь shortUrl из ответа Bit.ly JSON. Проблема заключается в том, что исходный URL-адрес включен в ответ, используя точечную нотацию для прохождения ответа не работает? Я могу получить другие атрибуты (errorCode, errorMessage и т. Д.), Но я не могу получить что-либо по результатам, вызывающим ошибку URL. Я что-то упустил?Parsing Bit.ly Ответ JSON в Javascript (url in json response)

Это ответ:

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

ответ

2

Объекты Javascript могут быть доступны через точечные обозначения (obj.property) в том и только в том случае, если имя свойства также является допустимым идентификатором Javascript.

В вашем примере, так как 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/» на «ссылку». Затем вы могли бы ссылаться на «shortUrl» следующим образом (response.results.link.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" }; 

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

theShortURL проведет http://bit.ly/1F5ewS как результат.