簡體   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