国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

JAVA如何轉(zhuǎn)換樹結構數(shù)據(jù)代碼實例

瀏覽:161日期:2022-09-03 16:38:15

在實戰(zhàn)開發(fā)中經(jīng)常有需要處理樹形菜單、樹形目錄等等等業(yè)務需求。而對于這種產(chǎn)品,在設計數(shù)據(jù)庫時也建議使用id<----->parentId的結構來做。但是最終前端顯示多用hightChart或者Echart插件來實現(xiàn)。所以在給前端數(shù)據(jù)時,最好的做法就是把數(shù)據(jù)庫結構話的數(shù)據(jù)處理成treeJson格式。

第一步:引入fastjson

<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version></dependency>

第二步:用到了工具內(nèi)的JSONPath

JSONPath使用教程

/** * 樹轉(zhuǎn)換 * * @param obj 需要轉(zhuǎn)換的對象 * @param parentCodeFieldName 父標識字段名 * @param parentCode 父標識值 * @param currentCodeFieldName 當前標識字段名 * @param childrenFiledName 子樹的字段名 * @param c 需要轉(zhuǎn)換的Class類型 * @param <T> 泛型 * @return 返回List<T> */ public static <T> List<T> tree(Object obj, String parentCodeFieldName, String parentCode, String currentCodeFieldName, String childrenFiledName, Class<T> c) { long t1 = System.currentTimeMillis(); String jsonStr = JSON.toJSONString(obj); log.debug('樹轉(zhuǎn)換開始 >>>>>>>>>>>>>>>> {}', JSON.toJSONString(obj)); //獲取第一層級的數(shù)據(jù) JSONArray jsonArray = (JSONArray) JSONPath.read(jsonStr, '$[' + parentCodeFieldName + '=' + parentCode + ']'); if (CollectionUtils.isEmpty(jsonArray)) { //為空的話直接返回空集合 return Lists.newArrayList(); } for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String code = jsonObject.getString(currentCodeFieldName); treeChildren(jsonStr, jsonObject, parentCodeFieldName, code, currentCodeFieldName, childrenFiledName); } List<T> list = JSONArray.parseArray(jsonArray.toString(), c); log.debug('樹轉(zhuǎn)換結束, 轉(zhuǎn)換時間: {} ms . >>>>>>>>>>>>>>>> {}', (System.currentTimeMillis() - t1), JSON.toJSONString(list)); return list; } private static void treeChildren(String jsonStr, JSONObject currentJsonObj, String parentCodeFieldName, String parentCode, String currentCodeFieldName, String childrenFiledName) { JSONArray jsonArray = (JSONArray) JSONPath.read(jsonStr, '$[' + parentCodeFieldName + '=' + parentCode + ']'); if (CollectionUtils.isEmpty(jsonArray)) { return; } currentJsonObj.put(childrenFiledName, jsonArray); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String code = jsonObject.getString(currentCodeFieldName); treeChildren(jsonStr, jsonObject, parentCodeFieldName, code, currentCodeFieldName, childrenFiledName); } }

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Java
相關文章:
主站蜘蛛池模板: 大片毛片女女女女女女女 | 亚洲精品在线看 | 日本免费一区二区三区视频 | 国产精品免费久久久免费 | 欧美特级一级毛片 | 手机看片成人 | 久久在线播放 | 好妞操 | 日本精品1在线区 | 操美国女人| 曰批美女免费视频播放 | 久久99久久精品免费思思6 | 日本尹人综合香蕉在线观看 | 亚洲欧美成人综合久久久 | 91久久国产 | 亚洲日本视频在线 | 免费看a级 | 欧美视频 亚洲视频 | 欧美亚洲国产激情一区二区 | 成人18视频在线观看 | 日韩欧美亚洲综合久久99e | 日本aaaa片毛片免费观看 | 91国高清视频 | 模特视频一二三区 | 国产在线精品一区免费香蕉 | 国产视频成人 | 美女喷水网站 | 精品日韩欧美 | 台湾精品视频在线播放 | 黄色三级理沦片 | 国产精自产拍久久久久久蜜 | 日韩 欧美 国产 师生 制服 | 欧美日韩亚洲高清不卡一区二区三区 | 精品欧美一区视频在线观看 | 国产专区一区 | 日本一级高清不卡视频在线 | 欧美一区二区三区免费看 | 99精品高清视频一区二区 | 国产精品欧美日韩 | 91成人免费| 久久午夜网 |