2015-10-05 135 views
2

解析單個json對象時出現問題。如何使用angular JS將JSON對象添加到JSON數組中?

假設下面的數據從服務器

 { 
      "root": { 
       "data": [ 
        { 
         "name": "Raj", 
         "age": "22" 
        }, 
        { 
         "name": "Janu", 
         "age": "22" 
        } 
       ] 
      } 
     } 

獲取和我的劇本是

的script.js

 var myApp=angular.module('myApp',[]); 
     myApp.controller('myCtrl', function($scope, $http){ 
      $http.get("manydata.json") 
      .success(function(response) { 
       $scope.myDatas = response.root; 
      }); 
     }); 

HTML

<div ng-repeat="i in myDatas.data"> 

      Name: {{i.name}} 
      Age: {{i.age}} 

    </div> 

我雖然沒問題respo如果響應數據是1,那麼json將是:

{ 
     "root": { 
     "data": { 
      "name": "Raj", 
      "age": "22" 
     } 
     } 
    } 

如何一般地解析這些json數據?

PLNKR:http://plnkr.co/edit/W4YK6BDtIBfVhnPpHVm1?p=preview

+0

您是否嘗試過在服務器端修復此問題?例如,你可以在沒有數據的情況下返回一個空數組,應該通過HTTP請求解析得很好。 – Avalanche

回答

3

你只需要細微的變化,檢查類型。如果它不是數組,則將其轉換爲數組。這是你的代碼變成的。 這裏是plnkr

// Code goes here 

var myApp=angular.module('myApp',[]); 
myApp.controller('myCtrl', function($scope, $http){ 
    $http.get("singledata.json") 
    .success(function(response) { 
     if(response.root.data && !(response.root.data instanceof Array)){ 
     response.root.data=[response.root.data] 
     } 

     $scope.myDatas = response.root; 

    }); 
}); 
3

我會檢查數據是否是一個數組或沒有,如果沒有,只是ammend的數據是一個數組:

像這樣:

$http.get("singledata.json") 
.success(function(response) { 
    if(response.root.data && !angular.isArray(response.root.data)){ 
    var object = response.root.data; 
    response.root.data = []; 
    response.root.data.push(object); 
    } 
    $scope.myDatas = response.root; 
}); 
2

您可以檢查數據是否陣列與否。如果沒有,那麼你創建數組爲。檢查此代碼的工作。

對於控制器:

var myApp=angular.module('myApp',[]); 
myApp.controller('myCtrl', function($scope, $http){ 
$http.get("manydata.json") 
.success(function(response) { 
    var data = response.root.data; 
    if(data.constructor === Array){ 
    $scope.myDatas = data; 
    }else{ 
    $scope.myDatas = new Array(data); 
    } 
}); 
}); 

對於HTML:

<div ng-repeat="i in myDatas"> 

     Name: {{i.name}} 
     Age: {{i.age}} 

</div> 

希望這有助於。