使用JSON.Net检索目录和文件结构(但没有“目录”,“文件”关键字)

时间:2016-09-30 11:36:32

标签: c# json.net

我使用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" 

我只想要目录名和文件名,而不是在关键字下获取目录名,在另一个关键字下获取文件名。请帮忙。

由于

1 个答案:

答案 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
}