我使用JSON.Net递归检索目录和文件结构。推荐此链接(Is there a way to directly get a directory structure and parse it to Json in C#?)。结果如图所示进行了检索
RootDir
{
"directory":
{
"dirA": {
"file" : [ "file0.txt", "file1.jpg" ]
},
"emptyDir": {
}
},
"file": [ "file2.png" ]
}
但我想从结构中排除“目录”和“文件”关键字。我的结构应该是这样的
RootDir
{
"dirA": {
" "file0.txt", "file1.jpg"
},
"dirB": {
}
},
"file2.png"
我只想要目录名和文件名,而不是在关键字下获取目录名,在另一个关键字下获取文件名。请帮忙。
由于
答案 0 :(得分:0)
您无法准确获得所显示的结果,因为它将是无效的JSON。但是,你可以非常接近。尝试这样的事情:
public static string GetDirectoryAsJson(string path)
{
return GetDirectoryAsJObject(new DirectoryInfo(path)).ToString();
}
public static JObject GetDirectoryAsJObject(DirectoryInfo directory)
{
JObject obj = new JObject();
foreach (DirectoryInfo d in directory.EnumerateDirectories())
{
obj.Add(d.Name, GetDirectoryAsJObject(d));
}
foreach (FileInfo f in directory.GetFiles())
{
obj.Add(f.Name, JValue.CreateNull());
}
return obj;
}
然后像这样使用它(例如):
string json = GetDirectoryAsJson(@"C:\Users\JohnDoe\Documents");
如果C:\Users\JohnDoe\Documents
内的文件夹结构如下所示:
dirA
dirA1
foo.txt
file0.txt
file1.jpg
dirB
file2.png
然后生成的JSON看起来像这样:
{
"dirA": {
"dirA1": {
"foo.txt": null
},
"file0.txt": null,
"file1.jpg": null
},
"dirB": {},
"file2.png": null
}