如何浏览此JSON响应?

时间:2016-06-15 12:10:59

标签: javascript angularjs json

我是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"
  }]
}

我想从上面的回复中访问fnamelnamelocation的值。

4 个答案:

答案 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);

感谢你们的建议。 :)