0

所以我使用 Yahoo 的 API 将坐标转换为邮政编码。它返回的 JSON 是这样的:

{
"ResultSet": {
    "version": "1.0",
    "Error": 0,
    "ErrorMessage": "No error",
    "Locale": "us_US",
    "Quality": 99,
    "Found": 1,
    "Results": [{
         ....
     }]

我正在做的是:

$.getJSON("http://where.yahooapis.com/geocode?q=" + lat + ",+" + lon + "&gflags=R&flags=J", function(data){
            console.log(data.ResultSet.Results.postal);
        });

我上面列出的显然不起作用。我的问题是:如何访问 Results 数组中的数据?

谢谢

4

3 回答 3

3

因为结果是一个数组,是否将控制台日志行更改为以下工作?

console.log(data.ResultSet.Results[0].postal)

在这种情况下,只需遍历数组以获取每个元素。获取 JSON 的代码对我来说看起来不错,我假设您只是错过了数组元素位 :)

于 2012-04-29T20:04:00.973 回答
0

这应该有效。

$.getJSON("http://where.yahooapis.com/geocode?q=234532,234533&gflags=R&flags=J", function(data){
   $.each(data.ResultSet.Results,function(i,item){
      console.log(data.ResultSet.Results[i].postal);
   });     
});

示例:http: //jsfiddle.net/ALsHH/11/

于 2012-04-29T20:10:33.440 回答
0

该行console.log(data.ResultSet.Results.postal);正在尝试访问在一个名为portal的对象上调用data.ResultSet.Results的属性,但是该属性不存在,因为 Results 是一个对象数组。

您可能需要做的是迭代数组,例如...

$.getJSON("http://where.yahooapis.com/geocode?q=" + lat + ",+" + lon + "&gflags=R&flags=J", function(data){
    for (var i=0; i< data.ResultSet.Results.length; i++) {
        console.log("data.ResultSet.Results[i].postal = " + data.ResultSet.Results[i].postal);
});
于 2012-04-29T20:12:54.970 回答