js在某个json节点后循环
问题描述:
我想在找到特定的json节点后循环浏览一些json节点。js在某个json节点后循环
所以,这里所进行的输入:
{
"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 = role后发出for循环时,它将失败。
任何建议,非常感谢。 谢谢。
答
试试这个:
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));
答
我想你应该在你的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
});
}
}
希望这可以帮助
答
您可以使用filter
和map
阵列的方法。
newJson.roles = attributeValue
.filter(function(x){return x['@name']==='role'})
.map(function(x){return {'role': x['$']}})
答
谢谢大家 - 你真棒一切! 此制定了我:
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);
~~~~~~~~~~~~~~~~~~~~~最终结果~~~~~~~~ ~~~~~~
[object Object] {
newJson: [object Object] {
roles: [[object Object] {
role: "roleA"
}, [object Object] {
role: "roleB"
}]
}
}