1

我想知道是否有办法获取特定的目录结构并将其解析为 json,以便我可以使用 jquery 插件创建客户端树视图模式。提前致谢

4

3 回答 3

6

使用 JSON.NET:

JToken GetDirectory(DirectoryInfo directory)
{
    return JToken.FromObject(new
    {
        directory = directory.EnumerateDirectories()
            .ToDictionary(x => x.Name, x => GetDirectory(x)),
        file = directory.EnumerateFiles().Select(x => x.Name).ToList()
    });
}

示例用法:

var json = GetDirectory(new DirectoryInfo("...some path...")).ToString();

这将为您提供如下所示的 JSON:

{
    "directory":
    {
        "dirA": {
            "file" : [ "file0.txt", "file1.jpg" ]
        },
        "emptyDir": {
        }
    },
    "file": [ "file2.png" ]
}
于 2013-04-03T17:10:23.270 回答
1

事实上,有一种使用Json.NET将 C# 对象转换为 JSON 的简单方法。

您只需创建一个List<>包含您想要的数据然后调用

var wrapper = new { TreeData= list };
string json = JsonConvert.SerializeObject(wrapper);
于 2013-04-03T17:09:30.303 回答
-1

您可以创建自定义类,例如:

abstract class DirectoryChildItem
{
    public string Name { get; set; }
}

class Directory : DirectoryChildItem
{
    public List<DirectoryChildItem> Childs { get; set; }
}

class File : DirectoryChildItem
{
}

然后你应该使用静态类 System.IO.Directory 遍历你的文件系统并使用上面的类创建项目。遍历文件系统后,在您的 ASP.NET MVC 操作中使用“return Json(obj)”方法

于 2013-04-03T17:08:29.723 回答