从 JSON 中删除子节点

Deleting child node from JSON

本文关键字:子节点 删除 JSON      更新时间:2023-09-26

我有以下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;
                                 }
                             }
                        }
                    }   

由于这一行,它不起作用:

if(!obj[k]){

仅当值为 falseundefinednull0NaN"" 时,才会删除children。对象的计算结果始终为 true 。(您可以在浏览器的 JS 控制台中通过键入 !!{} 进行检查)。

您应该删除整个条件或"!"。

如果它是一个对象,只需执行以下操作:

delete object.node;

注意力

对于不能使用的对象object.length它不会返回任何内容,则必须使用Object.getLength(object);