2016-04-27 12 views
0

特定のjsonノードを見つけた後、いくつかのjsonノードをループしようとしています。上記のJSONペイロードの終わりの2つの役割があるあなたが見ることができるように特定のjsonノードの後のjsループ

{ 
"search": { 
    "result": { 
     "DN": { 
      "$": "A,B,C" 
     }, 
     "attribute-value": [ 
      { 
       "@name": "name", 
       "$": "nameHere" 
      }, 
      { 
       "@name": "account", 
       "$": "accountNameHere" 
      }, 
      { 
       "@name": "role", 
       "$": "roleA" 
      }, 
      { 
       "@name": "role", 
       "$": "roleB" 
      } 
     ] 
    } 
}} 

だから、ここINPUTです。 だから、私は以下のロジックとその@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ループを発行しようとすると失敗します。

ご意見はありがとうございます。 ありがとうございます。

答えて

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)); 
2

私はあなたがちょうどあなたのforループでは、このように、役割の配列に新しいオブジェクトを追加すべきだと思う:これはあなたがfiltermap配列のメソッドを使用することができます

0

を助けることができる

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 
     }); 
    } 
} 

希望。

newJson.roles = attributeValue 
    .filter(function(x){return x['@name']==='role'}) 
    .map(function(x){return {'role': x['$']}}) 
0

おかげでみんな - あなたはすべて素晴らしいです! これは私のために働いた:

JSBIN

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" 
}] 
    } 
} 
関連する問題