2016-09-30 10 views
0

JSON.Netを使用してディレクトリとファイル構造を再帰的に取得しました。このリンク(Is there a way to directly get a directory structure and parse it to Json in C#?)を参照してください。JSON.Netを使用してディレクトリとファイル構造を取得する(「ディレクトリ」、「ファイル」キーワードなし)

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

を示すような結果がretreivedしかし、私は構造から「ディレクトリ」と「ファイル」のキーワードを除外したいと思います。私の構造は、私はむしろ別のキーワードの下のディレクトリのキーワードの下の名前とファイル名を取得するよりも唯一のディレクトリ名やファイル名を望んでいたこの

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

のようになります。助けてください。

おかげ

+1

できません...あなたは2番目の例が有効なjsonではありません。 – mituw16

答えて

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 
} 
+0

ブライアンに感謝します。あなたの答えは間違いなく私を助けてくれました。 – user3323130

+0

問題ありません。あなたがそれが有用であったことをうれしく思います。 –

関連する問題