使用JSON检索目录和文件结构.Net(但不包含“目录”和“文件”).关键字)

本文关键字:包含 关键字 目录 文件 检索 JSON 文件结构 使用 Net | 更新日期: 2023-09-27 18:09:52

我使用JSON。Net以递归检索目录和文件结构。参考这个链接(是否有一种方法可以直接获得目录结构并在c#中将其解析为Json ?)检索到的结果如下所示

RootDir
{
"directory":
{
    "dirA": {
        "file" : [ "file0.txt", "file1.jpg" ]
    },
    "emptyDir": {
    }
},
"file": [ "file2.png" ]
}

但是我想从结构中排除"directory"answers"file"关键字。我的结构应该是这样的

RootDir
{
    "dirA": {
        " "file0.txt", "file1.jpg" 
    },
    "dirB": {
    }
},
 "file2.png" 

我只想要目录名和文件名,而不是得到一个关键字下的目录名和另一个关键字下的文件名。请帮助。

谢谢

使用JSON检索目录和文件结构.Net(但不包含“目录”和“文件”).关键字)

您无法得到您所显示的结果,因为它将是无效的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
}