我正在尝试从嵌套的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,其中对象是控制台记录的。谢谢您的帮助。
答案 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);
}