【问题标题】:Getting data from nested JSON object using angular GET使用 Angular GET 从嵌套的 JSON 对象中获取数据
【发布时间】:2015-04-01 03:05:22
【问题描述】:

我正在尝试从嵌套的 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/

【问题讨论】:

    标签: javascript json angularjs http get


    【解决方案1】:

    更新小提琴: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;
    

    【讨论】:

      【解决方案2】:

      简答

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

      长答案

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

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

      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/

      【讨论】:

        猜你喜欢
        • 2017-02-13
        • 1970-01-01
        • 1970-01-01
        • 2020-09-29
        • 2021-10-24
        • 1970-01-01
        • 2018-05-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多