繁体   English   中英

如何在Json上使用Java或Javascript获取每个级别的唯一元素(如MainMenu / Submenu1 / SubMenu2)?

[英]How To Get The Unique Elements for Each Level (Like MainMenu/Submenu1/SubMenu2) On Json using java or javascript…?

我有下面的json,我想为每个主节点获取唯一的子子节点

{
    "name": "MENUS",
    "value": "",
    "children": [
        {
            "name": "MENU1",
            "value": {},
            "children": [
                {
                    "name": "SubMenu1",
                    "value": {},
                    "children": [
                        {
                            "name": "SubMenu2",
                            "value": {},
                            "children": [
                                {
                                    "name": "SubMenu3",
                                    "value": {
                                        "Pld": "1"
                                    },
                                    "children": []
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name": "MENU1",
            "value": {},
            "children": [
                {
                    "name": "SubMenu1",
                    "value": {},
                    "children": [
                        {
                            "name": "SubMenu2",
                            "value": {},
                            "children": [
                                {
                                    "name": "SubMenu4",
                                    "value": {
                                        "Pld": "1"
                                    },
                                    "children": []
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

我想要每个主节点的JSON格式如下,我想要唯一的子节点,这意味着该子节点不应在JSON中重复。

{
    "name": "MENUS",
    "value": "",
    "children": [
        {
            "name": "MENU1",
            "value": {},
            "children": [
                {
                    "name": "SubMenu1",
                    "value": {},
                    "children": [
                        {
                            "name": "SubMenu2",
                            "value": {},
                            "children": [
                                {
                                    "name": "SubMenu3",
                                    "value": {
                                        "Pld": "1"
                                    },
                                    "children": []
                                },
                                {
                                    "name": "SubMenu4",
                                    "value": {
                                        "Pld": "1"
                                    },
                                    "children": []
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

能否请任何人帮助我如何获取唯一的分层树JSON。

编辑::添加POJO类以供参考

这就是我的Java Pojo的样子,

MenuTree.java

私有字符串名称;
私有字符串值;
私人儿童[]儿童;

Children.java

私有字符串名称;
私人价值价值;
私人儿童[]儿童;

Value.java

私有String Pld;

您可以使用迭代和递归方法,在每个级别中搜索现有名称,并在数组中添加新对象(如果找不到)。

 var object = { name: "MENUS", value: "", children: [{ name: "MENU1", value: {}, children: [{ name: "SubMenu1", value: {}, children: [{ name: "SubMenu2", value: {}, children: [{ name: "SubMenu3", value: { Pld: "1" }, children: [] }] }] }] }, { name: "MENU1", value: {}, children: [{ name: "SubMenu1", value: {}, children: [{ name: "SubMenu2", value: {}, children: [{ name: "SubMenu4", value: { Pld: "1" }, children: [] }] }] }] }] }, unique = [object].reduce(function iter(r, { name, value, children = [] }) { var object = r.find(o => o.name === name); if (!object) { object = { name, value }; r.push(object); } children.reduce(iter, object.children = object.children || []); return r; }, []); console.log(unique); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM