如何从 RESTFUL 服务读取 JSON 一个对象数据



我正在尝试使用restful服务从服务中读取数据。 当我有一个 json 对象时,我遇到了问题。 这是我的代码:

服务代码:

var ROAList =[];
var promise = $http.post(urlBase + '/' + 'getROAList', params)
                    .success(function (data) {
                        ROAList = data.item;
                        return ROAList;
                    })
                    .error(function (data) {                        
                        ROAList = 'error';
                        return ROAList;
                    });
            return promise;

在控制器中:

var list =[];
$scope.ROAListItem = function(){
    list =service.getROAList();
}

在 html 中:

<div ng-repeat="roa in list()" ng-click ="selectROAitem(roa.soa.name)">
  <div> {{roa.id}} </div>
 <div> {{roa.soa.name}}</div>  

这是我的 JSON 数据:

{"item": [
      {
      "id":"001",
      "type":"001x2z"
      "sao":       {
         "itemNo": "3",
         "name": "001"
      },
   },
      {
      "id":"002",
      "type":"002x2g"
      "sao":       {
         "itemNo": "5",
         "name": "006"
      }
]}

它适用于多个项目,但我收到一个项目的错误。 对于此 JSON 数据:

{"item":{
      "id":"001",
      "type":"001x2z"
      "sao":       {
         "itemNo": "3",
         "name": "001"
      }
}

对于此数据,我得到"无法读取未定义的属性'名称'。

删除了冗长的答案。我没有看到你的最后一个部分。您的多个返回都存储在一个数组中,而您的单个返回则不是。因此,单个对象的点访问不正确。

回应评论:同样,您应该真正格式化返回数据,使其始终在数组中,否则您可以执行以下操作:

$scope.ROAListItem = function(){
    list = service.getROAList();
    if(!Array.isArray(list)){
      list = [list];
    }
}

一个快速的解决方案是修改您的服务调用,如下所示:

$http.post(urlBase + '/' + 'getROAList', params)
    .success(function (data) {
        ROAList = data.item;
        if (!angular.isArray(ROAList)) {
            ROAList = [ ROAList ];
        }
        return ROAList;
    })

但是,您的服务确实应该提供一致的行为,即使只有一个项目也返回数组。

相关内容

  • 没有找到相关文章

最新更新