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

我正在用html构建一个文件管理器,我在c中以字符串数组的形式获取文件路由,比如
[“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; }
    }
}