在Javascript中解析Bit.ly JSON响应(json响应中的url)

时间:2009-08-07 18:30:10

标签: javascript json bit.ly

我正在尝试从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"
}

5 个答案:

答案 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作为结果。