Есть ли способ напрямую получить структуру каталогов и разобрать ее в 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