我正在尝试从Bit.ly JSON响应中提取shortUrl。问题是原始URL是否包含在响应中,使用点符号来遍历响应不起作用?我可以得到其他属性(errorCode,errorMessage等),但是由于URL的结果,我无法得到任何结果。 我错过了什么吗?
这是回复:
{
"errorCode": 0,
"errorMessage": "",
"results": {
"http://www.google.com/": {
"hash": "2V6CFi",
"shortKeywordUrl": "",
"shortUrl": "http://bit.ly/1F5ewS",
"userHash": "1F5ewS"
}
},
"statusCode": "OK"
}
答案 0 :(得分: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'];
答案 1 :(得分:1)
eval
将解析JSON,但它通常被认为是不安全的,因为它允许JSON文件执行它喜欢的任何代码。 This question讨论了为什么并指出了一些更安全的解析JSON的方法。
答案 2 :(得分:0)
var responseAsJSON = eval(jsonString);
alert(responseAsJSON.shortUrl);
答案 3 :(得分:0)
从您的示例JSON对象中,我希望“http://www.google.com/”成为子对象的名称(如“results”)。假设您将“http://www.google.com/”替换为“link”。然后你可以像这样引用“shortUrl”(response.results.link.shortUrl)并返回“http://bit.ly/1F5ewS”。
答案 4 :(得分: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作为结果。