使用angular.js将JSON数据成员打印到控制台中

时间:2019-06-17 07:16:04

标签: json angularjs

我想使用angularjs访问JSON对象成员。我可以打印整个json对象数组,但是不能唯一地访问对象的成员。

          $scope.rows = []; // init empty array
          $scope.datainput =[];

          $http({
           method: 'GET',
           url: 'Data/input.json'
        }).then(function (data){
           $scope.datainput=data;
           //console.log($scope.datainput);
           console.log($scope.datainput);


        },function (error){
           console.log("big error");
        });



        var json=JSON.parse($scope.datainput);
        console.log(json[0].status);

我也尝试过此代码,但仍然遇到相同的错误。

           $scope.temp = "";
           $scope.rows = []; // init empty array
           $scope.datainput =[];


        $http({
            method: 'GET',
            url: 'Data/input.json'
         }).then(function (data){
            $scope.datainput=data;
            //console.log($scope.datainput);
            console.log($scope.datainput);

          var json=JSON.parse($scope.datainput);
          console.log(json[0].status);

         },function (error){
            console.log("big error");
         });

json文件input.json

[
    {"status":"payfail","value":"310"},
    {"status":"payinit","value":"100"},
    {"status":"paysuccess","value":"200"},
    {"status":"payreturn","value":"50"}

]

我收到此错误:

  

SyntaxError:JSON输入意外结束       在JSON.parse()

解决方案就是这个。。。

           $scope.rows = []; // init empty array
           $scope.datainput =[];


        $http({
            method: 'GET',
            url: 'Data/input.json'
         }).then(function (data){
            $scope.datainput=data.data;
            //console.log(data);



            console.log($scope.datainput);

            var json=JSON.parse(JSON.stringify($scope.datainput));
            console.log(json[0].status);


         },function (error){
            console.log("big error");
         });

2 个答案:

答案 0 :(得分:2)

我的猜测是,您正在尝试在诺言返回的JSON字符串之前对其进行解析。

请尝试将解析代码放入then块中,以便其以正确的顺序执行。

在进一步调查中,这是更新的答案:

除了确定承诺执行顺序外,事实证明访问响应变量上数据的方式还存在问题。

在此处查看$ http的文档:W3Schools.com $http doco

您将看到回调响应值实际上包含一个名为data的成员,用于响应有效负载。要使此工作正常,请尝试访问响应对象上的数据成员。

$scope.datainput=data.data;

最好将数据响应对象从数据重命名为响应,以提高可读性。

答案 1 :(得分:0)

您可以使用以下代码解决该问题:

$scope.rows = []; // init empty array
  $scope.datainput =[];

          $http({
           method: 'GET',
           url: 'Data/input.json'
        }).then(function (data){
           $scope.datainput=data.data;
           console.log($scope.datainput);

        var json= angular.fromJson($scope.datainput); 
         console.log(json[0].status);

        },function (error){
           console.log("big error");
        });

您不应该将函数Json.Parse写入Get,而应在then块中编写此代码,并使用data.datajson文件中获取数据。