JAVA如何转换树结构数据代码实例
2020-04-02 12:08
1106 查看
在实战开发中经常有需要处理树形菜单、树形目录等等等业务需求。而对于这种产品,在设计数据库时也建议使用id<----->parentId的结构来做。但是最终前端显示多用hightChart或者Echart插件来实现。所以在给前端数据时,最好的做法就是把数据库结构话的数据处理成treeJson格式。
第一步:引入fastjson
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency>
第二步:用到了工具内的JSONPath
/** * 树转换 * * @param obj 需要转换的对象 * @param parentCodeFieldName 父标识字段名 * @param parentCode 父标识值 * @param currentCodeFieldName 当前标识字段名 * @param childrenFiledName 子树的字段名 * @param c 需要转换的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("树转换开始 >>>>>>>>>>>>>>>> {}", JSON.toJSONString(obj)); //获取第一层级的数据 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("树转换结束, 转换时间: {} 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); } }
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- java主类结构、基本数据类型、 变量与常量、运算符、数据类型转换、代码注释与编码规范
- Java数据封装树形结构代码实例
- java 数据结构之删除链表中的元素实例代码
- JAVA 根据数据库表内容生产树结构JSON数据的实例代码
- Java如何连接Access数据库(两种方式实例代码)
- 如何将let结构(block scope)转换到当前的JavaScript代码
- 数据结构之链表、栈和队列 java代码实现
- 数据结构(Java 队列模拟)本代码重在学习数据结构思路,代码完整性欠缺,请见谅
- 【零一】如何用代码爬抓电商数据(附淘宝API调用实例)
- 如何把java代码,打包成jar文件以及转换为exe可执行文件
- java实现连接mysql数据库单元测试查询数据的实例代码
- java--xml与字符串两者之间的转换代码(实例)
- 一个将数据文件转换成excel文件打印的java实现方法的代码片断(Struts+poi)
- JNI native层、C++异步回调JAVA代码。JNI数据类型转换
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- JNI中如何在本地代码中生成和操作Java的对象和字符串,并编写应用实例
- java操作html转换成pdf文件的实例代码
- Native层与java层之间的数据传递代码实例
- json学习系列(8)JSON与JAVA数据的相互转换实例
- Java如何连接Access数据库(两种方式实例代码)