在找到特定的 json 节点后,我尝试循环访问一些 json 节点。
所以,这是输入:
{
"search": {
"result": {
"DN": {
"$": "A,B,C"
},
"attribute-value": [
{
"@name": "name",
"$": "nameHere"
},
{
"@name": "account",
"$": "accountNameHere"
},
{
"@name": "role",
"$": "roleA"
},
{
"@name": "role",
"$": "roleB"
}
]
}
}}
如您所见,上面的 json 负载末尾有 2 个 Angular 色。 因此,我使用以下逻辑来实现 @name = Angular 色:
var attributeValue = node['search'].result['attribute-value'];
for (var i = 0; i < attributeValue.length; i++) {
if (attributeValue[i]['@name'] === 'role') {
var vRole = attributeValue[i].$;
//The newJson.roles.role is to assign it to the new payload below
newJson.roles.role = vRole;
}
}
到达那里后,我想获取 roleA 和 roleB 并将其输出到以下 newJson 有效负载中:
var newJson = {
"newJson": {
"roles": [{
"role": {}
}, {
"role": {}
}],
}
}
目标是能够获取所有 INPUT Angular 色节点并将其输出到 newJson 负载中,但是当我尝试在到达该 @name=role 后发出 for 循环时,它会失败。
如有任何建议,我们将不胜感激。 谢谢。
最佳答案
我认为你应该将一个新对象附加到 Angular 色数组中,就像在 for 循环中一样:
var attributeValue = node['search'].result['attribute-value'];
for (var i = 0; i < attributeValue.length; i++) {
if (attributeValue[i]['@name'] === 'role') {
var vRole = attributeValue[i].$;
newJson.roles.push({
role: vRole
});
}
}
希望这能有所帮助
关于javascript - js 在某个 json 节点后循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36893405/