我想使用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");
});
答案 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.data
从json
文件中获取数据。