我正在尝试在找到特定的json节点后遍历一些json节点。
所以,这是INPUT:
{
"search": {
"result": {
"DN": {
"$": "A,B,C"
},
"attribute-value": [
{
"@name": "name",
"$": "nameHere"
},
{
"@name": "account",
"$": "accountNameHere"
},
{
"@name": "role",
"$": "roleA"
},
{
"@name": "role",
"$": "roleB"
}
]
}
}}
正如您所看到的,在上面的json有效负载的末尾有两个角色。 所以,我使用以下逻辑来达到@name =角色:
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角色节点并将其输出到newJson有效负载中,但是当我在获得@name =角色后尝试发出for循环时,它会失败。
任何建议都表示赞赏。 谢谢。
答案 0 :(得分:2)
我认为你应该在roles数组中添加一个新对象,就像你在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
});
}
}
希望这可以提供帮助
答案 1 :(得分:0)
您可以使用filter
和map
数组方法。
newJson.roles = attributeValue
.filter(function(x){return x['@name']==='role'})
.map(function(x){return {'role': x['$']}})
答案 2 :(得分:0)
试试这个:
var attributeValue = node['search'].result['attribute-value'];
var newJson = {roles:[]};
attributeValue.forEach(function(item){
if(item["@name"]==="role"){
newJson.roles.push({role:item["$"]})
}
});
console.log(JSON.stringify(newJson));
答案 3 :(得分:0)
谢谢大家 - 你真棒! 这对我有用:
var d = {
"search": {
"result": {
"DN": {
"$": "A,B,C"
},
"attribute-value": [
{
"@name": "name",
"$": "nameHere"
},
{
"@name": "account",
"$": "accountNameHere"
},
{
"@name": "role",
"$": "roleA"
},
{
"@name": "role",
"$": "roleB"
}
]
}
}};
var newJson = {
"newJson": {
"roles": []
}
};
var attributeValue = d.search.result['attribute-value'];
for (var i = 0; i < attributeValue.length; i++) {
if (attributeValue[i]['@name'] === 'role') {
var vRole = attributeValue[i].$;
newJson.newJson.roles.push({"role": vRole});
}
}
console.log(newJson);
最后的结果是〜p ~~~~~~~~~~~~~~
[object Object] {
newJson: [object Object] {
roles: [[object Object] {
role: "roleA"
}, [object Object] {
role: "roleB"
}]
}
}