2014-11-25 6 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

+1

'if (! Obj [k]) {' - Я думаю, вам нужно проверить противоположное условие: _if узел существует, а затем удалить его – fcalderan

+0

Да, это объект .. Пожалуйста, поделитесь своей информацией, как я могу это сделать – Narayanan

ответ

0

Это не работает из-за этой линии:

if(!obj[k]){ 

children будет удален только в том случае, если значение false, undefined, null, 0, NaN или "". Объект всегда оценивает true. (Вы можете проверить его на консоли JS в своем браузере, набрав !!{}).

Либо вы должны удалить все условие, либо '!'.

0

Если это объект просто сделать это:

delete object.node;

ВНИМАНИЕ

Для объектов, которые вы не можете использовать object.length это ничего не вернуть, вы должны использовать Object.getLength(object);

+1

if (object.hasOwnProperty (узел)) {delete object.node} – Smile0ff

Смежные вопросы