當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
在不知道根节点的情况下生成树形结构 (采用JSONObject)
生活随笔
收集整理的這篇文章主要介紹了
在不知道根节点的情况下生成树形结构 (采用JSONObject)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
廢話不多說直接上代碼
/*** * 生成樹形結(jié)構(gòu) 在不知道跟節(jié)點的情況下* @param list 源數(shù)據(jù)* @param nodeList 跟節(jié)點數(shù)據(jù)* @param childName 子節(jié)點名稱* @param key 節(jié)點key* @param up_key 上級節(jié)點key* @param child_level 節(jié)點級別 1,2,3...* @return*/public static JSONArray recursionCreateArrayNotRoot(JSONArray list, JSONArray nodeList, String childName, String key, String up_key, int child_level) {if (nodeList == null) {//跟節(jié)點為空的情況下 ,遍歷查詢跟節(jié)點nodeList = new JSONArray();//作為跟節(jié)點的存在for (int i = 0; i < list.size(); i++) {boolean mark = false;JSONObject n = list.getJSONObject(i);for (int j = 0; j < list.size(); j++) {JSONObject m = list.getJSONObject(j);if (n.optString(up_key).equals(m.optString(key))) {mark = true;break;}}if (!mark) {n.put("child_level", child_level);nodeList.add(n);//添加的是沒有上級的}}list.removeAll(nodeList);//將根節(jié)點移除出列表}//為根節(jié)點尋找下級for (int i = 0; i < nodeList.size(); i++) {JSONObject n = nodeList.getJSONObject(i);JSONArray child = n.optJSONArray(childName);if (child == null) {child = new JSONArray();}for (int j = 0; j < list.size(); j++) {JSONObject m = list.getJSONObject(j);m.put("child_level", child_level + 1);if (n.optString(key).equals(m.optString(up_key))) {child.add(m);}}n.put(childName, child);list.removeAll(child);//跟節(jié)點的下級找到后移除列表recursionCreateArrayNotRoot(list, n.optJSONArray(childName), childName, key, up_key, child_level + 1);//不斷的尋找下級}return nodeList;} 復(fù)制代碼理論上這個方法可以通用,不管你們定義的關(guān)鍵字是什么都可以使用
調(diào)用方法 JSONArray result = jJson.recursionCreateArrayNotRoot(array, null, "child","org_key", "up_org_key", 1); 復(fù)制代碼原始數(shù)據(jù)
[ {"org_key":"2001","up_org_key":"0","usr_org_key":"1001","usr_org_name":"光明城","user_org_code":"10","boss_id":"10010","org_name":"光明城1","org_code":"12","area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw","org_level":"1","area_name":"虎邱村" }, {"org_key":"2002","up_org_key":"2001","usr_org_key":"1002","usr_org_name":"晉安區(qū)","user_org_code":"10-0001","boss_id":"10010","org_name":"晉安區(qū)","org_code":"12-1","area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw","org_level":"2","area_name":"虎邱村" }, {"org_key":"2003","up_org_key":"0","usr_org_key":"","usr_org_name":"","user_org_code":"","boss_id":"10010","org_name":"鼓樓區(qū)","org_code":"11","area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw","org_level":"1","area_name":"虎邱村" }, {"org_key":"org_fTZXL9Vea8mLlxVCeGEWbFr4cQHQDQhZ","up_org_key":"2001","usr_org_key":"org_iU57sIDvHmM6LljFPSZbgNVieVhjKyBQ","usr_org_name":"福州測試小區(qū)","user_org_code":"10-0003","boss_id":"10010","org_name":"福州測試小區(qū)","org_code":"12-2","area_key":"U7okhSHxC8Vs1c3YXxQleRiiIYelvmdL","org_level":"2","area_name":"文樓村" }, {"org_key":"org_7I7UNQloRMuZBC6RQlp6gZf9KDgiI3hm","up_org_key":"2001","usr_org_key":"","usr_org_name":"","user_org_code":"","boss_id":"10010","org_name":"花園小區(qū)","org_code":"12-5","area_key":"IfwmlJrHl6137YZ7FvmcW1QjlNYoGWkS","org_level":"2","area_name":"福耀社區(qū)" }, {"org_key":"org_fx5fjorqBRWJgWR4CxMx3Wquq0CimhnE","up_org_key":"2003","usr_org_key":"org_HHsupVt4HPzfcpSZShchbLivotsVdaFK","usr_org_name":"大儒世家","user_org_code":"003","boss_id":"10010","org_name":"五鳳街道","org_code":"11-1","area_key":"DxeRGfT5mP2tq1Yw4b7hqzDckZiL2T9W","org_level":"2","area_name":"福和社區(qū)" }, {"org_key":"org_gG6L68Wt0zjmCxp0dIWM0XKDCToyFndZ","up_org_key":"org_gG6L68Wt0zjmCxp0dIWM0XKDCToyFndZ","usr_org_key":"","usr_org_name":"","user_org_code":"","boss_id":"10010","org_name":"部門A","org_code":"001","area_key":"vI59WqwHEDLvdyc3SI2Z0p1u8ZQl6dvl","org_level":"2","area_name":"柏渡村" }, {"org_key":"org_IXGMspHF6FZFrhZEWJGQpijR1hH0aQ1C","up_org_key":"org_7I7UNQloRMuZBC6RQlp6gZf9KDgiI3hm","usr_org_key":"org_EdLEdVgGciifkYeRmluNawW6Tjgxq4Fu","usr_org_name":"西洪小區(qū)","user_org_code":"0021","boss_id":"10010","org_name":"區(qū)委會","org_code":"12-5-1","area_key":"pMhxXlafOcYeQ0vNWf3nz1tIdwvS0JdN","org_level":"3","area_name":"玉峰村" }, {"org_key":"org_hCtV75g3cB6bBqJHarfRvKwG1YjEKwwX","up_org_key":"org_IXGMspHF6FZFrhZEWJGQpijR1hH0aQ1C","usr_org_key":"","usr_org_name":"","user_org_code":"","boss_id":"10010","org_name":"某某部門","org_code":"12-5-1-1","area_key":"U7okhSHxC8Vs1c3YXxQleRiiIYelvmdL","org_level":"4","area_name":"文樓村" } 復(fù)制代碼]
生成后的數(shù)據(jù)
[ {"org_key":"2001","up_org_key":"0","usr_org_key":"1001","usr_org_name":"光明城","user_org_code":"10","boss_id":"10010","org_name":"光明城1","org_code":"12","area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw","org_level":"1","area_name":"虎邱村","child_level":1,"child":[{"org_key":"2002","up_org_key":"2001","usr_org_key":"1002","usr_org_name":"晉安區(qū)","user_org_code":"10-0001","boss_id":"10010","org_name":"晉安區(qū)","org_code":"12-1","area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw","org_level":"2","area_name":"虎邱村","child_level":2,"child":[]},{"org_key":"org_fTZXL9Vea8mLlxVCeGEWbFr4cQHQDQhZ","up_org_key":"2001","usr_org_key":"org_iU57sIDvHmM6LljFPSZbgNVieVhjKyBQ","usr_org_name":"福州測試小區(qū)","user_org_code":"10-0003","boss_id":"10010","org_name":"福州測試小區(qū)","org_code":"12-2","area_key":"U7okhSHxC8Vs1c3YXxQleRiiIYelvmdL","org_level":"2","area_name":"文樓村","child_level":2,"child":[]},{"org_key":"org_7I7UNQloRMuZBC6RQlp6gZf9KDgiI3hm","up_org_key":"2001","usr_org_key":"","usr_org_name":"","user_org_code":"","boss_id":"10010","org_name":"花園小區(qū)","org_code":"12-5","area_key":"IfwmlJrHl6137YZ7FvmcW1QjlNYoGWkS","org_level":"2","area_name":"福耀社區(qū)","child_level":2,"child":[{"org_key":"org_IXGMspHF6FZFrhZEWJGQpijR1hH0aQ1C","up_org_key":"org_7I7UNQloRMuZBC6RQlp6gZf9KDgiI3hm","usr_org_key":"org_EdLEdVgGciifkYeRmluNawW6Tjgxq4Fu","usr_org_name":"西洪小區(qū)","user_org_code":"0021","boss_id":"10010","org_name":"區(qū)委會","org_code":"12-5-1","area_key":"pMhxXlafOcYeQ0vNWf3nz1tIdwvS0JdN","org_level":"3","area_name":"玉峰村","child_level":3,"child":[{"org_key":"org_hCtV75g3cB6bBqJHarfRvKwG1YjEKwwX","up_org_key":"org_IXGMspHF6FZFrhZEWJGQpijR1hH0aQ1C","usr_org_key":"","usr_org_name":"","user_org_code":"","boss_id":"10010","org_name":"某某部門","org_code":"12-5-1-1","area_key":"U7okhSHxC8Vs1c3YXxQleRiiIYelvmdL","org_level":"4","area_name":"文樓村","child_level":4,"child":[]}]}]}] }, {"org_key":"2003","up_org_key":"0","usr_org_key":"","usr_org_name":"","user_org_code":"","boss_id":"10010","org_name":"鼓樓區(qū)","org_code":"11","area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw","org_level":"1","area_name":"虎邱村","child_level":1,"child":[{"org_key":"org_fx5fjorqBRWJgWR4CxMx3Wquq0CimhnE","up_org_key":"2003","usr_org_key":"org_HHsupVt4HPzfcpSZShchbLivotsVdaFK","usr_org_name":"大儒世家","user_org_code":"003","boss_id":"10010","org_name":"五鳳街道","org_code":"11-1","area_key":"DxeRGfT5mP2tq1Yw4b7hqzDckZiL2T9W","org_level":"2","area_name":"福和社區(qū)","child_level":2,"child":[]}] } 復(fù)制代碼]
轉(zhuǎn)載于:https://juejin.im/post/5cad58bee51d456e5633ddaa
總結(jié)
以上是生活随笔為你收集整理的在不知道根节点的情况下生成树形结构 (采用JSONObject)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《圣洁》的读后感作文3000字
- 下一篇: 一次诡异的数据库死锁问题排查过程