我是JSON的新手,在AngularJS控制器中访问由REST控制器返回的以下JSON时遇到问题,如下所示:
$scope.fetchFormData = function (empId) {
CommonService.fetchform(empId).
then(function(data) {
console.log(JSON.stringify(data.employee));
console.log(JSON.stringify(data.employee['fname']));
console.log(JSON.stringify(data.employee['lname']));
console.log(JSON.stringify(data.employee['location']));
});
}
服务:
fetchform : function(empId) {
var deferred = $q.defer();
return $http.get(applink+'/fetchEmployee/'+empId)
.success(function (data) {})
.then(function(response) {
if (typeof response.data === 'object') {
console.log('fetchEmployee -> Data recieved :'+JSON.stringify(response.data));
deferred.resolve(response.data);
return deferred.promise;
}
else {
// invalid response
console.log('fetchEmployee -> Invalid Data recieved');
return $q.reject(response.data);
}
},function(response) {
// something went wrong
console.log('fetchEmployee -> Something went wrong');
return $q.reject(response.data);
});
}
JSON:
{
"employee": [{
"fname": "John",
"lname": "Doe",
"location": "CA"
}, {
"fname": "Jenny",
"lname": "Doe",
"location": "CA"
}]
}
我想从上面的回复中访问fname
,lname
和location
的值。
答案 0 :(得分:1)
如果你在变量' data'中有JSON,你的控制器内部然后,如果你想访问数组,你必须做:
data.employee --> [{John object}, {Jenny Object}]
因此,如果您想访问您必须写的第一个员工:
data.employee[0]
如果你想访问不同的值,那么:
data.employee[0].fname
data.employee[0].lname
data.employee[0].location
答案 1 :(得分:1)
你有一个包含数组的JSON对象。
您可以像使用forEach的任何数组或控制器中的简单for循环一样遍历此数组。
在HTML ng-repeat中将模拟for循环并为数组中的每个项显示1个元素。
var app = angular.module('MyApp', []);
app.controller('MyCtrl', function($scope) {
$scope.data = {
"employee": [
{ "fname": "John", "lname": "Doe", "location": "CA" },
{ "fname": "Jenny", "lname": "Doe", "location": "CA" }
]};
$scope.data.employee.forEach(function(employee) {
console.log(employee.fname);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="MyApp" ng-controller="MyCtrl">
<ul>
<li ng-repeat="item in data.employee">{{item.fname}}</li>
</ul>
</div>
答案 2 :(得分:0)
它是JS对象吗?人们似乎并没有意识到JSON确实是一个字符串。
检查“JSON”的类型。如果它是一个字符串,你需要解析它。
let str = '{"employee":[ {"fname":"John","lname":"Doe","location":"CA", {"fname":"Jenny","lname":"Doe","location":"CA"}]}';
let jsonObject = JSON.parse(str);
let name = jsonObject.employee[0].fname
答案 3 :(得分:0)
使用以下方法:
var values = data;
var i=0;
angular.forEach(values,function(value,index){
console.log(' Value 723 '+value);
console.log(' Index 724 '+index);
i++;
angular.forEach(value,function(internalValue,key){
console.log(' InternalValue 725 '+JSON.stringify(internalValue));
console.log(' Internal Key 726 '+key2);
});
});
console.log(' Ctrl Counter 729 '+i);
感谢你们的建议。 :)