日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

在不知道根节点的情况下生成树形结构 (采用JSONObject)

發(fā)布時間:2025/3/21 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在不知道根节点的情况下生成树形结构 (采用JSONObject) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

廢話不多說直接上代碼

/*** * 生成樹形結(jié)構(gòu) 在不知道跟節(jié)點(diǎn)的情況下* @param list 源數(shù)據(jù)* @param nodeList 跟節(jié)點(diǎn)數(shù)據(jù)* @param childName 子節(jié)點(diǎn)名稱* @param key 節(jié)點(diǎn)key* @param up_key 上級節(jié)點(diǎn)key* @param child_level 節(jié)點(diǎn)級別 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é)點(diǎn)為空的情況下 ,遍歷查詢跟節(jié)點(diǎn)nodeList = new JSONArray();//作為跟節(jié)點(diǎn)的存在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é)點(diǎn)移除出列表}//為根節(jié)點(diǎn)尋找下級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é)點(diǎn)的下級找到后移除列表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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。