【问题标题】:Parsing Bit.ly JSON response in Javascript (url in json response)在 Javascript 中解析 Bit.ly JSON 响应(json 响应中的 url)
【发布时间】:2009-08-07 18:30:09
【问题描述】:

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

【问题讨论】:

    标签: javascript json bit.ly


    【解决方案1】:

    可以通过点符号 (obj.property) 访问 Javascript 对象当且仅当属性名称也是有效的 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'];
    

    【讨论】:

      【解决方案2】:

      eval 可以解析 JSON,但它通常被认为是不安全的,因为它允许 JSON 文件执行它喜欢的任何代码。 This question 讨论了原因并指出了解析 JSON 的一些更安全的方法。

      【讨论】:

        【解决方案3】:
        var responseAsJSON = eval(jsonString);
        alert(responseAsJSON.shortUrl);
        

        【讨论】:

          【解决方案4】:

          从您的示例 JSON 对象中,我希望“http://www.google.com/”是子对象的名称(如“结果”)。假设您将“http://www.google.com/”替换为“链接”。然后,您可以像这样 (response.results.link.shortUrl) 引用“shortUrl”,这将返回“http://bit.ly/1F5ewS”。

          【讨论】:

            【解决方案5】:

            试试这个:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-11-23
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多