在Javascript中解析Bit.ly JSON响应(JSON响应中的url)
我试图从Bit.ly JSON响应中提取shortUrl。问题是原始URL包含在响应中,使用点符号遍历响应不起作用?我可以获取其他属性(errorCode、errorMessage等),但由于URL的原因,我无法在结果下获取任何内容。 我错过什么了吗 以下是回应:在Javascript中解析Bit.ly JSON响应(JSON响应中的url),javascript,json,bit.ly,Javascript,Json,Bit.ly,我试图从Bit.ly JSON响应中提取shortUrl。问题是原始URL包含在响应中,使用点符号遍历响应不起作用?我可以获取其他属性(errorCode、errorMessage等),但由于URL的原因,我无法在结果下获取任何内容。 我错过什么了吗 以下是回应: { "errorCode": 0, "errorMessage": "", "results": { "http://www.google.com/": { "has
{
"errorCode": 0,
"errorMessage": "",
"results": {
"http://www.google.com/": {
"hash": "2V6CFi",
"shortKeywordUrl": "",
"shortUrl": "http://bit.ly/1F5ewS",
"userHash": "1F5ewS"
}
},
"statusCode": "OK"
}
eval
将用于解析JSON,但它通常被认为是不安全的,因为它允许JSON文件执行它喜欢的任何代码。讨论解析JSON的原因并指出一些更安全的方法。从示例JSON对象中,我希望“”是子对象的名称(如“结果”)。假设您将“”替换为“链接”。然后,您可以像这样引用“shortUrl”(response.results.link.shortUrl),它将返回“”。试试这个:
var myJSONResponse = { "errorCode": 0, "errorMessage": "", "results": { "http://www.google.com/": { "hash": "2V6CFi", "shortKeywordUrl": "", "shortUrl": "http://bit.ly/1F5ewS", "userHash": "1F5ewS" } }, "statusCode": "OK" };
var theshortur=myJSONResponse.results[“”].shortUrl
当且仅当属性名称也是有效的Javascript标识符时,可以通过点符号(
obj.property
)访问Javascript对象
在您的示例中,由于URL显然不是有效标识符,因此可以使用另一种方法,即数组样式访问(obj[property]
):
var myJSONResponse = { "errorCode": 0, "errorMessage": "", "results": { "http://www.google.com/": { "hash": "2V6CFi", "shortKeywordUrl": "", "shortUrl": "http://bit.ly/1F5ewS", "userHash": "1F5ewS" } }, "statusCode": "OK" };
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'];