我使用JSON。Net以递归检索目录和文件结构。参考这个链接(是否有一种方法可以直接获得目录结构并在c#中将其解析为Json ?)检索到的结果如下所示
RootDir
{
"directory":
{
"dirA": {
"file" : [ "file0.txt", "file1.jpg" ]
},
"emptyDir": {
}
},
"file": [ "file2.png" ]
}
但是我想从结构中排除"directory"one_answers"file"关键字。我的结构应该是这样的
RootDir
{
"dirA": {
" "file0.txt", "file1.jpg"
},
"dirB": {
}
},
"file2.png"
我只想要目录名和文件名,而不是得到一个关键字下的目录名和另一个关键字下的文件名。请帮助。
谢谢
您无法得到您所显示的结果,因为它将是无效的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:UsersJohnDoeDocuments");
如果C:UsersJohnDoeDocuments
中的文件夹结构是这样的:
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
}