我遇到了一个需要使用动态变量访问嵌套JSON的问题。这是我的JSON:
{
"Account2": [{
"accountId": "17467****",
"containerId": "7454***",
"path": "accounts\/17467*****\/containers\/7454***",
}, {
"accountId": "17467****",
"containerId": "7519***",
"path": "accounts\/17467****\/containers\/7519***",
}],
"Account 1": [{
"accountId": "17661****",
"containerId": "7483***",
"path": "accounts\/17661****\/containers\/7483***",
}]
}
在前端使用AngluarJS我用它来打印表格,在这里我可以使用"路径"变量使用href,然后基于url参数进行第二次API调用,如下所示:
<td><a href="/gui/tags/{{v1.path}}">View Container</a></td>
v1.path = accounts / 17467 ***** / containers / 7454 ***
现在我的问题是,我想在点击表格之前发送此电话以显示一些数据。问题是当访问具有动态变量的JSON时,您可以看到:&#34; Account2&#34;,&#34; Account1&#34;。我不能使用:`$ scope.GTMcontainersAccount = response.data.ACCOUNT1;
因为&#34; account1&#34;是动态的,并且从用户变为用户。
有人有想法吗?正则表达式?
更新:
当我使用时:
$scope.GTMcontainersAccount = response.data;
$scope.keys = Object.keys(response.data);
for(n in $scope.keys)
{
$scope.asim = $scope.keys[n];
console.log($scope.asim);
console.log(response.data[$scope.asim]);
}
这给了我这个结果:
所以我必须这样写:
console.log(response.data[$scope.asim][0].accountId);
但是这只给了我一行&#34; account2&#34;不是&#34; account1&#34;
答案 0 :(得分:1)
您需要使用 Object.keys()
来获取对象的密钥,然后为每个key
获取相关的array
并循环其项目:< / p>
Object.keys(data).forEach(function(key) {
let accounts = data[key];
if (accounts && accounts.length) {
accounts.forEach(function(account) {
console.log(account);
});
}
});
<强>演示:强>
let data = {
"Account2": [{
"accountId": "17467****",
"containerId": "7454***",
"path": "accounts\/17467*****\/containers\/7454***",
}, {
"accountId": "17467****",
"containerId": "7519***",
"path": "accounts\/17467****\/containers\/7519***",
}],
"Account 1": [{
"accountId": "17661****",
"containerId": "7483***",
"path": "accounts\/17661****\/containers\/7483***",
}]
};
Object.keys(data).forEach(function(key) {
let accounts = data[key];
if (accounts && accounts.length) {
console.log(key+": ");
accounts.forEach(function(account) {
console.log(account);
});
}
});
&#13;