2014-07-03 23 views
1

这是一个我真正感到愚蠢的问题。但是我搜索了网页,并没有找到具体的例子来解决我的问题。幸运的是,这个问题很简单。我已被AngularJS阅读下面的JSON数据如下:无法解析AngularJS中的特定JSON数据

return $http.post('getData.htm').then(function(response) { 
    console.log("response.data: " + response.data); 
    var roles = angular.fromJson(response.data).model.results; 

    return roles; 
    }); 

在这种情况下,控制台输出如下:

response.data: {"model":{"results":["1","2","3","4","5","6","7","8","9","10","11"],"totalCount":11}} 

我期望roles包含具有这些数字的阵列,然而,当我打印出roles的值,它只是表示[object Object]

如何访问results阵列中包含的数字?

非常感谢!

+0

你尝试打印为:'JSON.stringify(response.data)'? –

+1

'response.data'是您所需要的。在添加'angular.fromJson'调用时,您将有效地创建另一个对象,并从JSON响应反序列化。 – Ben

回答

2

JavaScript数组也是一个对象,所以也许你这么做的时候,你var roles = angular.fromJson(response.data).model.results;得到了你想要的阵列。尝试的角色[1]

+0

这确实是答案。我发誓我尝试了十亿次。这是编程,我猜:)。感谢您的帮助! – insomniac

+0

感谢您的回答!我搜索了网页,发现每个人都使用JSON.parse,但不幸的是,这并没有奏效。你的答案完美无缺。 – nkt24

0

不要尝试从JSON“加载”一个JSON对象。

response.data已经JSON格式的角度转化..只要使用它像:

console.log(response.data.model); 
console.log(response.data.model.results); 
console.log(response.data.model.results[1]); 
+0

当我尝试这样做时,会发生以下情况:第一行​​输出'undefined',第二行导致TypeError:无法读取未定义的属性'结果' – insomniac

+0

如果console.log(response.data)返回带有'模型'键,它应该肯定会工作... –

0

http://jsbin.com/duruy/1/edit

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

activate(); 
    $scope.roles = []; 

function activate() 
    { 

    return $http.get('http://jsbin.com/yewefo/1').then(function(response) { 
    console.log(response.data.model); 
    angular.copy(response.data.model.results, $scope.roles); 


    }); 

    } 

});