在javascript中解析JSON响应

时间:2013-06-30 22:03:31

标签: javascript json angularjs

我正在使用AngularJS构建应用程序,我正在尝试在Google地图上绘制位置。我有一个JSON响应,如下所示:

 locations: [{ 
    id: 123
    latlng:  { 
        lat: 56.3
        lon: -2.1
        } 
    name: TestName
    }]

我正在使用的指令(angular-google-maps)要求标记采用以下格式。我想要做的是创建一个只包含lat和lng值的新数组,如下所示。我还需要将lat和lng重命名为经度和纬度:

markers: [ {
        latitude: 45,
        longitude: -74
    },{
        latitude: 46,
        longitude: -75  
    }]

我是编程新手,特别是在javascript中。我试图看看我是否可以在JSON响应中访问latlng对象,但是未定义。这是看起来像:

for (var latlng in $scope.locations) {
        if ($scope.locations.hasOwnProperty(latlng))
        {
            var latitude = $scope.locations[latlng].lat;
        }
        console.log(latitude);
    }

提前致谢!

1 个答案:

答案 0 :(得分:1)

$scope.locations[latlng]将您带到包含latlng键的对象,而不是该键引用的对象。由于迭代变量是数组的索引,因此您会发现使用反映此名称的名称会更加困惑,例如i而不是latlng

for (var i in $scope.locations) {
    …
    var latitude = $scope.locations[i].latlng.lat;
    …
}

在大多数JavaScript实现中,您有另一种选择:

$scope.locations.forEach(function(location) {
    …
    var latitude = location.latlng.lat;
    …
});

(另请注意@ rtcherry的评论。)