如何遍历复杂的json对象

时间:2018-05-18 06:26:00

标签: arrays angularjs json angularjs-ng-repeat

我从服务器端接收复杂的JSON对象。我不知道如何循环这样的对象。这是对象。

"message": {
        "name": ["Name cannot be blank."],
        "contact_person": ["Contact Person cannot be blank."],
        "username": ["Username cannot be blank."]
    },

我正在使用angularjs并使用ng-repeat进行迭代。

<div style="color: red;" ng-repeat="err in message">{{err}}</div>

消息是什么。 $scope.message=justdata.message 这就是我得到的:

enter image description here



如何以正确的方式格式化它。请帮帮我!

3 个答案:

答案 0 :(得分:1)

这对我来说很好,你需要在div中嵌套ng-repeat,因为你的错误信息正在列表中。你必须再次循环它。如下:

 <div style="color: red;" ng-repeat="err in message">
      <span ng-repeat="val in err">
        {{val}}
      </span>
    </div>

这是工作代码

&#13;
&#13;
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<div style="color: red;" ng-repeat="err in message">
  <span ng-repeat="val in err">
    {{val}}
  </span>
</div>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.message =  {
        "name": ["Name cannot be blank."],
        "contact_person": ["Contact Person cannot be blank."],
        "username": ["Username cannot be blank."]
    };
});
</script>

</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

鉴于您似乎想要输出错误消息列表,我会预处理$scope.message只是一个字符串数组。这样的事情可以解决问题:

var payload = {
  "message": {
    "name": ["Name cannot be blank."],
    "contact_person": ["Contact Person cannot be blank."],
    "username": ["Username cannot be blank."]
  }
};

$scope.errors = [].concat.apply([], Object.values(payload.message));

这会在$scope.errors中填充一系列错误消息,然后您可以使用ng-repeat进行迭代。

答案 2 :(得分:0)

试试这个: -

<div style="color: red;" ng-repeat="err in message">{{err[0]}}</div>