python list转换成树形结构_c# List列表数据转换成树形结构

本文介绍了如何将Python和C#中的List列表数据转换为树形结构,包括ZTreeJson和TreeToJson两个方法,用于构建树形Json。这两个方法遍历列表,根据父节点ID构造树状结构,并支持不同属性的处理。
摘要由CSDN通过智能技术生成

把List列表结构 转换成树形结构

///

/// 构造树形Json

///

public static class TreeJson

{

///

/// 转换树Json

///

/// 数据源

/// 父节点

///

public static string ZTreeJson(this List list, string parentId = null) //GetDepartmentTree等方法会给parentId赋值的是null,所以这里的parentId不能写""

{

StringBuilder strJson = new StringBuilder();

List item = list.FindAll(t => t.parentId == parentId);

strJson.Append("[");

if (item.Count > )

{

foreach (TreeEntity entity in item)

{

strJson.Append("{");

strJson.Append("\"id\":\"" + entity.id + "\",");

if (!string.IsNullOrEmpty(entity.text))

{

strJson.Append("\"name\":\"" + entity.text.Replace(" ", "") + "\",");

}

if (!string.IsNullOrEmpty(entity.Attribute))

{

strJson.Append("\"" + entity.Attribute + "\":\"" + entity.AttributeValue + "\",");

}

if (!string.IsNullOrEmpty(entity.AttributeA))

{

strJson.Append("\"" + entity.AttributeA + "\":\"" + entity.AttributeValueA + "\",");

}

if (!string.IsNullOrEmpty(entity.AttributeB))

{

strJson.Append("\"" + entity.AttributeB + "\":\"" + entity.AttributeValueB + "\",");

}

if (!string.IsNullOrEmpty(entity.AttributeC))

{

strJson.Append("\"" + entity.AttributeC + "\":\"" + entity.AttributeValueC + "\",");

}

if (entity.checkstate != null)

{

strJson.Append("\"checked\":" + entity.checkstate + ",");

}

strJson.Append("\"showcheck\":" + entity.showcheck.ToString().ToLower() + ",");

strJson.Append("\"open\":" + entity.isexpand.ToString().ToLower() + ",");

strJson.Append("\"isParent\":" + entity.hasChildren.ToString().ToLower() + ",");

strJson.Append("\"children\":" + ZTreeJson(list, entity.id) + "");

strJson.Append("},");

}

strJson = strJson.Remove(strJson.Length - , );

}

strJson.Append("]");

return strJson.ToString();

}

///

/// 转换树Json

///

/// 数据源

/// 父节点

///

public static string TreeToJson(this List list, string ParentId = null) //GetDepartmentTree等方法会给parentId赋值的是null,所以这里的parentId不能写""

{

StringBuilder strJson = new StringBuilder();

List item = list.FindAll(t => t.parentId == ParentId);

strJson.Append("[");

if (item.Count > )

{

foreach (TreeEntity entity in item)

{

strJson.Append("{");

strJson.Append("\"id\":\"" + entity.id + "\",");

if (!string.IsNullOrEmpty(entity.text))

{

strJson.Append("\"text\":\"" + entity.text.Replace(" ", "") + "\",");

}

if (!string.IsNullOrEmpty(entity.value))

{

strJson.Append("\"value\":\"" + entity.value + "\",");

}

if (!string.IsNullOrEmpty(entity.Attribute))

{

strJson.Append("\"" + entity.Attribute + "\":\"" + entity.AttributeValue + "\",");

}

if (!string.IsNullOrEmpty(entity.AttributeA))

{

strJson.Append("\"" + entity.AttributeA + "\":\"" + entity.AttributeValueA + "\",");

}

if (entity.title != null && !string.IsNullOrEmpty(entity.title.Replace(" ", "")))

{

strJson.Append("\"title\":\"" + entity.title.Replace(" ", "") + "\",");

}

if (entity.img != null && !string.IsNullOrEmpty(entity.img.Replace(" ", "")))

{

strJson.Append("\"img\":\"" + entity.img.Replace(" ", "") + "\",");

}

if (entity.checkstate != null)

{

strJson.Append("\"checkstate\":" + entity.checkstate + ",");

}

//if (entity.parentId != null)

//{

// strJson.Append("\"parentnodes\":\"" + entity.parentId + "\",");

//}

strJson.Append("\"parentnodes\":\"" + entity.parentId + "\",");

if (entity.Level != null)

{

strJson.Append("\"Level\":" + entity.Level + ",");

}

strJson.Append("\"showcheck\":" + entity.showcheck.ToString().ToLower() + ",");

strJson.Append("\"isexpand\":" + entity.isexpand.ToString().ToLower() + ",");

if (entity.complete == true)

{

strJson.Append("\"complete\":" + entity.complete.ToString().ToLower() + ",");

}

strJson.Append("\"hasChildren\":" + entity.hasChildren.ToString().ToLower() + ",");

strJson.Append("\"ChildNodes\":" + TreeToJson(list, entity.id) + "");

strJson.Append("},");

}

strJson = strJson.Remove(strJson.Length - , );

}

strJson.Append("]");

return strJson.ToString();

}

}

使用js将后台返回的数据转换成树形结构

将类似如下数据转换成树形的数据: [ { id: 1, name: '1', }, { id: 2, name: '1-1', parentId: 1 }, { id: 3, name: '1-1-1 ...

js将有父子关系的数据转换成树形结构数据

js将有父子关系的数据转换成树形结构数据 比如如下基本数据: let allDatas = [ { id: 3, name: 'bbbb', parendId: 1 }, { id: 2, name: ...

记一则 Lambda内递归调用方法将集合对象转换成树形结构

public dynamic GetDepartments(string labID) { List usedIDs = new List(); //缓存已 ...

Word排版成树形结构技巧

初始文字 A A1 A2 B1 B1 B2 C C1 希望效果 关健设置

dom4j 解析字符串成树形结构

引入maven依赖: dom4jdom4j

Java数据封装成树形结构,多级

参考地址:https://blog.csdn.net/chendu500qiang/article/details/91493147 1.实体类 @data public class PublishS ...

idea目录结构子目录在父目录后面跟着改成树形结构

1.点击项目窗口的设置按钮 2.取消Compact Middle Packages选项的对勾即可

Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级

在平时的开发工作中,经常遇到这样一个场景,在数据库中存储了具有父子关系的数据,需要将这些数据以树形结构的形式在界面上进行展示.本文的目的是提供了一个通用的编程模型,解决将具有父子关系的数据转换成树形结 ...

java不需要递归列表转树形结构

有时候我们需要将列表结构的数据转成树形结构的数据 废话不多说直接上代码 基础类 `@Data public class TreeNode { private Long id; private Long ...

随机推荐

oracle静态与动态监听

在运行lsnrctl命令的status时,常会看到如下返回值: 服务“test”包含1个例程.    例程"mydata",状态 UNKOWN,包含此服务的一个处理程序... 服务 ...

数据库水平拆分和垂直拆分区别(以mysql为例)

数据库水平拆分和垂直拆分区别(以mysql为例) 数据库水平拆分和垂直拆分区别(以mysql为例)   案例:     简单购物系统暂设涉及如下表: 1.产品表(数据量10w,稳定) 2.订单表(数据 ...

exit() die return 的区别

rutrun 会返回一个值,或不返回值 只是当前函数内return后面的语句将不会执行,后面的其它语句继续执行exit()可以返回值,也可以不返回值直接终止程序 函数输出一条消息,并退出当前脚本. 会 ...

ajax写登录页面

静态配置 STATICFILES_DIRS = ( os.path.join(BASE_DIR,'my_blog','static'), ) AUTH_USER_MODEL = "app01 ...

Centos安装jdk8

1.下载jdk1.8的tar cd /usr/local/src #切换到该目录下 wget url #下载jdk8的tar包 2.下载完成后解压tar包 tar -zxvf jdk-8u152-li ...

短信外部浏览器H5链接一键跳转微信打开任意站

今天讲讲微信跳转的那些事情,这项技术最早出现在在线广告上面,可以从外部引流到微信并打开微信内置浏览器然后打开一个指定的网页地址,在这个网页里面可以放任何想推广的内容,可以是引导文案.活动内容,或者是一 ...

git 中Pull/Request 的初步

1. 目的: pull/request (简称PR) 是 项目管理者(管理者)和项目开发者(开发者)之间提交和确认工作成果的机制. 2. 流程: 开发者: 在本地创建特性分支. > git ch ...

CodeBlocks: 生成的exe文件自定义一个图标

CodeBlocks生成的exe文件的图标默认是系统图标,如何自定义一个漂亮的小图标呢? 我是C菜鸟,平时只用CodeBlocks练习c,也不开发什么软件,这个问题就难倒我了. 到网上搜索了一下,发现 ...

Unity3d- 资源

Data与Resources文件夹一般只读文件放到Resources目录Data用于新建的文件或者要修改的文件============================================= ...

tomcat 启动日志乱码

打开cd到tomcat/conf/目录下 修改logging.properties 找到 java.util.logging.ConsoleHandler.encoding = utf-8这行 更改为 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值