在Javascript中解析Bit.ly JSON响应(JSON响应中的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

我试图从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"
}

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'];