ChatGPT助力-根据数据内容将数据转换成树级结构

作者在处理一个外包的微信小程序项目时,遇到将表格数据转换为树级结构的挑战。由于小程序没有table标签,作者决定重构表格并使用JSON数据。在数据格式化和反序列化过程中遇到问题,通过在线工具解决了反序列化错误,但实际应用中仍需调整。最终,借助AI辅助程序生成部分代码,成功完成了任务。
摘要由CSDN通过智能技术生成

兄弟们,谁懂啊。半夜23:00,学长发了一个之前提交的党员积分的项目,客户要求合并树级结构,让数据展示更清晰;请看大图:

要求把学这类似的一栏合并然后将其居中,但是突然发现居然微信小程序并没有专用的table标签啊!我真的会谢啊!最后好在我巧舌如簧,以我三寸不烂☞口技直接将活甩掉了一半,哈哈哈!

不过,我还是要写一大部分代码啊,给大家说说我重构这个表格的思路啊!我想的是将这个表格制作为一个横向树形的表格,用一个view将整个学的内容合并起来,正好表格中也存在其他的类型的树级内容,类似下图

再通过微信小程序的WX:for和微信小程序遍历对象的方法wx:for-index和wx:for-item来对生成的数据进行渲染。

但是突然发现这想法是个好想法,在Dom方面修改起来也不是太难。但是,突然发现将数据进行格式调整为树级结构这......

重点来啦

没有办法,因为这是一个外包的项目,如果没有达到别人的要求,客户也会不满意。那没有办法啊,硬着头皮写呗。喝口82年60°凉白开继续写代码逻辑...突然我灵光一现,TM不是有专门的AI辅助程序吗而且我还下载了cousor这个client。所以我直接将数据转成JSON格式,拉到cursor上叫它写代码了。

JSON数据

嘿,我的个乖乖,TND还真的给我写出来了

这可把我高兴坏了,今天晚上不用熬夜了?可是话本里面不是这么演的啊....好巧不巧,不巧的事情来了....

这里有个坑...[恶心]

因为我这个数据是经过JSON序列化之后拿出来的(数据不太全小伙伴坚持一下,别人的数据不能随意展示)

但是我在node中反序列化这个字符转的时候出现了问题

康康报错

说实话,当时困遭了的我已经无力解决这个问题了,我随即将数据复制到在线JSON转js的网站(在线JSON转JS对象工具 - UU在线工具)一顿操作将其改成了JS格式拿回来测试,嘿,成功了不假...

我又拿到真实的程序上调试,但是它却跟预想数据是有一定出入的,不过根据我的三寸不烂之舌(跟它不断地沟通)下。嘿,哥们儿,又是提前下班的一天(2023/5/22 1:32)...

将List数据转换成树形结构的基本思路是首先遍历List,将其每个节点的父子关系建立起来,然后从根节点开始递归构建整个树形结构。 具体实现步骤如下: 1. 定义节点类,包含节点id、节点名称和子节点列表等属性。 ``` public class TreeNode { private String id; private String name; private List<TreeNode> children; // getter和setter方法 // ... } ``` 2. 遍历List,将每个节点的父子关系建立起来,可以使用Map来存储节点id和对应的节点对象,便于查找父节点。 ``` Map<String, TreeNode> map = new HashMap<>(); for (TreeNode node : list) { map.put(node.getId(), node); String parentId = node.getParentId(); if (parentId != null) { TreeNode parent = map.get(parentId); if (parent != null) { parent.getChildren().add(node); } } } ``` 3. 找到根节点,开始递归构建整个树形结构。 ``` public static TreeNode buildTree(List<TreeNode> list) { // 构建Map,方便查找节点 Map<String, TreeNode> map = new HashMap<>(); for (TreeNode node : list) { map.put(node.getId(), node); } // 找到根节点 TreeNode root = null; for (TreeNode node : list) { if (node.getParentId() == null) { root = node; break; } } // 从根节点开始递归构建整个树形结构 buildSubTree(root, map); return root; } private static void buildSubTree(TreeNode node, Map<String, TreeNode> map) { List<TreeNode> children = node.getChildren(); if (children == null) { return; } // 遍历子节点,递归构建子树 for (TreeNode child : children) { buildSubTree(child, map); } // 根据子节点的顺序重新排序 children.sort(Comparator.comparing(TreeNode::getName)); } ``` 以上就是将List数据转换成树行结构的基本实现方法。需要注意的是,这里的代码只是一个简单的示例,实际情况下可能需要根据具体的业务需求进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值