2014-11-25 127 views
0

我有下面的JSON。我必須從陣列中單獨刪除子節點,其餘內容應該可用。從JSON中刪除子節點

{ 
"model_type_name": "portfolio", 
"hier_model_type_name": "portfolio", 
"object_type": "product", 
"gen_new_flag": "n", 
"mkt_map_req_flag": "n", 
"rule_based_flag": null, 
"custom_price_type": null, 
"hier_id": 468299069, 
"hier_name": "AMS", 
"parent_hier_id": 1, 
"parent_hier_name": "Portfolio", 
"level": "2", 
"isLeaf": "0", 
"parentage": "\\Portfolio\\AMS", 
"hier_gen_new_flag": "y", 
"hier_child_gen_new_flag": "y", 
"hier_entity_role": "parent", 
"hier_child_entity": "portfolio", 
"hier_rel_type_name": "portfolio hierarchy", 
"hist_flag": "y", 
"hier_hist_flag": "y", 
"rls_type": null, 
"mass_updt_flag": null, 
"children": [ 
    { 
     "model_type_name": "dummy", 
     "hier_model_type_name": "portfolio", 
     "object_type": "product", 
     "gen_new_flag": "n", 
     "mkt_map_req_flag": "n", 
     "rule_based_flag": null, 
     "custom_price_type": null, 
     "hier_id": 469444670, 
     "hier_name": "Integrated Solutions", 
     "parent_hier_id": 468299069, 
     "parent_hier_name": "AMS", 
     "level": "3", 
     "isLeaf": "0", 
     "parentage": "\\Portfolio\\AMS\\Integrated Solutions", 
     "hier_gen_new_flag": "y", 
     "hier_child_gen_new_flag": "y", 
     "hier_entity_role": "parent", 
     "hier_child_entity": "portfolio", 
     "hier_rel_type_name": "portfolio hierarchy", 
     "hist_flag": "y", 
     "hier_hist_flag": "y", 
     "rls_type": null, 
     "mass_updt_flag": null, 
     "children": [ 
      { 
       "model_type_name": "dummy", 
       "hier_model_type_name": "portfolio", 
       "object_type": "product", 
       "gen_new_flag": "n", 
       "mkt_map_req_flag": "n", 
       "rule_based_flag": null, 
       "custom_price_type": null, 
       "hier_id": 469444678, 
       "hier_name": "Healthcare", 
       "parent_hier_id": 469444670, 
       "parent_hier_name": "Integrated Solutions", 
       "level": "4", 
       "isLeaf": "1", 
       "parentage": "\\Portfolio\\AMS\\Integrated Solutions\\Healthcare", 
       "hier_gen_new_flag": "y", 
       "hier_child_gen_new_flag": "n", 
       "hier_entity_role": "parent", 
       "hier_child_entity": "portfolio", 
       "hier_rel_type_name": "portfolio hierarchy", 
       "hist_flag": "y", 
       "hier_hist_flag": "y", 
       "rls_type": null, 
       "mass_updt_flag": null, 
       "children": null, 
       "hierGenNewFlag": true, 
       "releaseDriven": false, 
       "genNewFlag": false, 
       "hierChildGenNewFlag": false, 
       "massUpdateFlag": false 
      } 
     ], 
     "hierGenNewFlag": true, 
     "releaseDriven": false, 
     "genNewFlag": false, 
     "hierChildGenNewFlag": true, 
     "massUpdateFlag": false 
    } 
], 
"hierGenNewFlag": true, 
"releaseDriven": false, 
"genNewFlag": false, 
"hierChildGenNewFlag": true, 
"massUpdateFlag": false 

}

我試過這段代碼:但它不能正常工作。請幫助

for(var i=0; i< $scope.selectedNode.length; i++){ 
         var obj = scope.selectedNode[i]; 
         for(var k in obj){ 
          if(k == "children"){ 
           if(!obj[k]){ 
            delete $scope.selectedNode.children; 
           } 
          } 
         } 
        } 
+0

JSON是字符串的數據格式,不能刪除字符串中的節點。你的意思是一個** javascript對象**嗎? – adeneo 2014-11-25 10:57:20

+1

'if(!obj [k]){' - 我認爲你需要檢查相反的條件:_if節點存在然後刪除它_ – fcalderan 2014-11-25 10:59:55

+0

是的,它是一個對象..請分享你的信息我該怎麼做 – Narayanan 2014-11-25 11:32:01

回答

0

它不會因爲在該行的工作:

if(!obj[k]){ 

children只有在值爲falseundefined,時纔會被刪除,0,NaN""。對象總是評估爲true。 (你可以在瀏覽器的JS控制檯中輸入!!{}來查看它)。

要麼你應該刪除整個條件或'!'。

0

如果它是一個對象,只是這樣做:

delete object.node;

注意

對於對象不能使用object.length它不會返回任何東西,你必須使用Object.getLength(object);

+1

if object.hasOwnProperty(node)){delete object.node} – Smile0ff 2014-11-25 11:02:57