C# 如何构建类似对象的目录树结构?
我正在用html构建一个文件管理器,我在c中以字符串数组的形式获取文件路由,比如C# 如何构建类似对象的目录树结构?,c#,asp.net-web-api,data-structures,C#,Asp.net Web Api,Data Structures,我正在用html构建一个文件管理器,我在c中以字符串数组的形式获取文件路由,比如[“file.exe”、“folder1/”、folder1/file.xml、“folder1/subfolder1/”、“folder1/subfolder1/file.docx”]。问题是……如何将这个数组传递给c中的结构?才能在ASP Web API中返回?结构需要这样 [ { "text": "folder1", "iconCls": "constant fold
[“file.exe”、“folder1/”、folder1/file.xml、“folder1/subfolder1/”、“folder1/subfolder1/file.docx”]
。问题是……如何将这个数组传递给c中的结构?才能在ASP Web API中返回?结构需要这样
[
{
"text": "folder1",
"iconCls": "constant folder icon",
"items": [
{
"text": "subfolder1",
"iconCls": "constant folder icon",
"folderData":[
{
"icon": "constant file icon",
"text": "file.docx"
}
]
}
]
"folderData":[
{
"icon": "constant file icon",
"text": "file.xml"
}
]
}
]
对于您的任务,这可能是足够的对象:
public class FolderData
{
public string Text { get; set; }
public Image IconCls { get; set; }
}
public class Folder
{
public string Text { get; set; }
public Image IconCls { get; set; }
public List<Folder> Items { get; set; }
public List<FolderData> FolderDatas { get; set; }
}
公共类FolderData
{
公共字符串文本{get;set;}
公共映像IconCls{get;set;}
}
公共类文件夹
{
公共字符串文本{get;set;}
公共映像IconCls{get;set;}
公共列表项{get;set;}
公共列表文件夹数据{get;set;}
}
这相当于C级:
公共类目录
{
公共字符串文本{get;set;}
公共字符串iconCls{get;set;}
公共列表文件夹数据{get;set;}
公共列表项{get;set;}
公共类FolderData
{
公共字符串图标{get;set;}
公共字符串文本{get;set;}
}
公共类项目
{
公共字符串文本{get;set;}
公共字符串iconCls{get;set;}
公共列表文件夹数据{get;set;}
}
}
我使用一些有用的在线工具来处理json:
我认为这不符合要求。如果该项也有子项怎么办?为什么FolderData是一个列表?@RomanoZumbé你是对的,它只是用工具生成的c#类。我会修改它。现在你有一个无用的类
项
。如果你删除它,你基本上会得到我提供的相同代码;-)还有名字目录
可能会导致问题,因为它也在.Net framework中使用,并且很可能会在此应用程序中使用。我认为此结构不能将文件夹存储在另一个文件夹中,对吗?只有一个级别的文件夹包含n个文件夹和文件为什么要使用FolderData属性?抱歉,我不太了解,那里面有文件夹和文件的子文件夹呢?在这个结构中,你可以在项目
列表中存储其他文件夹
对象,并创建一个树状结构FolderData
取自你的示例JSONoh你是对的…我想使用Items属性来存储子文件夹和FolderData来存储文件在文件夹/子文件夹中。
public class Directory
{
public string text { get; set; }
public string iconCls { get; set; }
public List<FolderData> folderData { get; set; }
public List<Directory> items { get; set; }
public class FolderData
{
public string icon { get; set; }
public string text { get; set; }
}
public class Item
{
public string text { get; set; }
public string iconCls { get; set; }
public List<FolderData> folderData { get; set; }
}
}