Есть ли способ напрямую получить структуру каталогов и разобрать ее в Json в C#?

Я хотел бы знать, есть ли способ получить определенную структуру каталогов и проанализировать ее в json, чтобы я мог создать схему дерева на стороне клиента с помощью плагина jquery. заранее спасибо

3 ответа

Решение

Использование 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" ]
}

На самом деле, есть простой способ конвертировать объект C# в JSON, используя Json.NET.

Вы просто создаете List<> который содержит данные, которые вы хотите, а затем позвоните

var wrapper = new { TreeData= list };
string json = JsonConvert.SerializeObject(wrapper);

Вы можете создавать собственные классы, такие как:

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

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

class File : DirectoryChildItem
{
}

Затем вы должны пройти через вашу файловую систему, используя статический класс System.IO.Directory, и создавать элементы, используя классы, описанные выше. После обхода файловой системы используйте метод return Json(obj) в вашем действии ASP.NET MVC

Другие вопросы по тегам