2014-11-25 7 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은 문자열의 데이터 형식이므로 문자열의 노드를 삭제할 수 없습니다. ** 자바 스크립트 개체 **를 의미 했습니까? – adeneo

+1

'if (! obj [k]) {'- 반대 조건을 확인해야한다고 생각합니다 : _if 노드가 존재하고 삭제합니다. – fcalderan

+0

예, 객체입니다 .. 정보를 공유하십시오. 어떻게 할 수 있습니까? – Narayanan

답변

0

도와주세요 .. 작동하지 않습니다 :

if(!obj[k]){ 

값이 false, undefined,인 경우에만 children이 삭제됩니다., 0, NaN 또는 ""입니다. 개체는 항상 true으로 평가됩니다. 브라우저에서 JS 콘솔의 !!{}을 입력하여 확인할 수 있습니다.

전체 조건 또는 '!'을 제거해야합니다. 이 경우

0

객체는이 작업을 수행 :

delete object.node;

주의

을 개체의 당신이 아무것도 반환하지 않습니다 object.length을 사용할 수 없습니다, 당신은 Object.getLength(object);

를 사용해야합니다
+1

if object.hasOwnProperty (노드)) {delete object.node} – Smile0ff