1

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

5 回答 5

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'];
于 2009-08-07T19:27:50.290 回答
1

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

于 2009-08-07T18:49:14.593 回答
0
var responseAsJSON = eval(jsonString);
alert(responseAsJSON.shortUrl);
于 2009-08-07T18:46:40.620 回答
0

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

于 2009-08-07T18:53:21.233 回答
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作为结果。

于 2009-08-07T19:15:55.430 回答