使用angular GET从嵌套的JSON对象获取数据

时间:2015-04-01 03:05:22

标签: javascript json angularjs http get

我正在尝试从嵌套的JSON对象获取URL,但是在获取数据时遇到了问题。我不确定如何从深深嵌套的JSON对象中获取数据。

app.controller('mainCtrl', function($scope, $http) {


$http.get("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D'www.whitehouse.gov%2Ffacts%2Fjson%2Fall%2Fcollege%2520affordability'&format=json&diagnostics=true").then(function(responce) {
      $scope.status = responce;
      $scope.sortData = responce.data.query.results.json.json.url;
      console.log(responce);
      console.log($scope.sortData);
    });

});

我可以控制日志对象,但我不知道如何从深层嵌套对象中获取URL。这是JSFiddle,其中对象是控制台记录的。谢谢您的帮助。

https://jsfiddle.net/39pwve2x/19/

2 个答案:

答案 0 :(得分:0)

更新了小提琴:https://jsfiddle.net/39pwve2x/23/

在数据中,URL是重复数组对象(最后一个“json”节点)的一部分。 URL是数组中每个“json”的属性。如果您需要获取所有URL,请将数组传递给您的视图并对其进行ng-repeat:

<body ng-app="javascriptTest">
    <div ng-controller="mainCtrl">
        <div ng-repeat="item in sortData">
            {{item.url}}
        </div>
    </div>
</body>

......和控制器......

var app = angular.module('javascriptTest', []);

app.controller('mainCtrl', function($scope, $http) {
    $http.get("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D'www.whitehouse.gov%2Ffacts%2Fjson%2Fall%2Fcollege%2520affordability'&format=json&diagnostics=true").then(function(responce) {
      $scope.sortData = responce.data.query.results.json.json;
    });
});

您还可以通过指定索引来获取单个URL。例如,如果您只关心数据返回的第一个URL,则可以执行以下操作:

$scope.firstUrl = responce.data.query.results.json.json[0].url;

答案 1 :(得分:0)

简答

responce.data.query.results.json.json[0].url;

长答案

responce.data.query.results.json.json 是一个对象数组,每个对象都由索引标识,你需要提供你想要的索引访问。

您还可以使用循环来获取数组中的所有对象

var data = responce.data.query.results.json.json    
for (var i = 0; i < data.length; i++) {
    console.log(data[i].url);
}

https://jsfiddle.net/39pwve2x/22/