我想迭代 json 对象transactionByFop
。
HTML
<div ng-show="searhController.orderCAT.results.length" ng-repeat="(key,obj) in searhController.orderCAT.results track by $index">
<dl style="border: 1px;" ng-repeat="(keySub, resp) in obj">
<dt>{{keySub}}</dt>
<dd>{{resp}}</dd>
</dl>
</div>
JSON
[{
"lastUpdate": "2015-04-06 12:19:20.902",
"orderId": "83642465",
"idFop": 1,
"transactionByFop": {
"idTransactionByFop": 1523280,
"Binnacle": {
"tbkIdTransaction": 8333514670,
"ackType": "ACK",
"tbkOrderBuy": 1523280,
"tbkCodeCommerce": 123123,
"tbkTypeTransaction": "TR_NORMAL",
"tbkResponse": -1,
"tbkAmount": 3.7298E7,
"tbkCodeAuthorization": 0,
"tbkFinalNumberCard": "213123",
"tbkAccountantDate": "0406",
"tbkTransactionDate": "0406",
"tbkTransactionHour": "121830",
"tbkIdSession": 1523280,
"tbkTypePayment": "VN",
"tbkNumberFee": 0
}
},
"isLast": true}]
最佳答案
您想要展平您的嵌套对象。您可以执行以下操作(基于 this thread 的答案)。
创建一个函数来压平您的对象
$scope.flattenResults = function(data) {
var result = {};
function recurse(cur, prop) {
if (Object(cur) !== cur) {
result[prop] = cur;
} else if (Array.isArray(cur)) {
for (var i = 0, l = cur.length; i < l; i++)
recurse(cur[i], prop + "[" + i + "]");
if (l == 0)
result[prop] = [];
} else {
var isEmpty = true;
for (var p in cur) {
isEmpty = false;
recurse(cur[p], prop ? prop + "." + p : p);
}
if (isEmpty && prop)
result[prop] = {};
}
}
recurse(data, "");
return result;
};
在你的 ng-repeat 中使用它
<dl style="border: 1px;" ng-repeat="(keySub, resp) in flattenResults(obj)">
请参阅下面的工作示例 -
var searchapp = angular.module('searchapp', [])
.controller('searchController', function($scope) {
$scope.results = [{
"lastUpdate": "2015-04-06 12:19:20.902",
"orderId": "83642465",
"idFop": 1,
"transactionByFop": {
"idTransactionByFop": 1523280,
"Binnacle": {
"tbkIdTransaction": 8333514670,
"ackType": "ACK",
"tbkOrderBuy": 1523280,
"tbkCodeCommerce": 123123,
"tbkTypeTransaction": "TR_NORMAL",
"tbkResponse": -1,
"tbkAmount": 3.7298E7,
"tbkCodeAuthorization": 0,
"tbkFinalNumberCard": "213123",
"tbkAccountantDate": "0406",
"tbkTransactionDate": "0406",
"tbkTransactionHour": "121830",
"tbkIdSession": 1523280,
"tbkTypePayment": "VN",
"tbkNumberFee": 0
}
},
"isLast": true
}];
$scope.flattenResults = function(data) {
var result = {};
function recurse(cur, prop) {
if (Object(cur) !== cur) {
result[prop] = cur;
} else if (Array.isArray(cur)) {
for (var i = 0, l = cur.length; i < l; i++)
recurse(cur[i], prop + "[" + i + "]");
if (l == 0)
result[prop] = [];
} else {
var isEmpty = true;
for (var p in cur) {
isEmpty = false;
recurse(cur[p], prop ? prop + "." + p : p);
}
if (isEmpty && prop)
result[prop] = {};
}
}
recurse(data, "");
return result;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="searchapp" ng-controller="searchController">
<div ng-show="results.length" ng-repeat="(key,obj) in results track by $index">
<dl style="border: 1px;" ng-repeat="(keySub, resp) in flattenResults(obj)">
<dt>{{keySub}}</dt>
<dd>{{resp}}</dd>
</dl>
</div>
</div>
关于javascript - 迭代 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40384581/