2017-07-20 7 views
0

私はファイルマネージャーをhtmlのdemo hereで構築しています。ファイルルートをCの文字配列として["file.exe","folder1/",folder1/file.xml","folder1/subfolder1/","folder1/subfolder1/file.docx"]のように取得します。質問は、どのようにこの配列をC#の構造体に渡してASP Web APIに戻すかです。構造は、これはあなたの仕事のために十分なオブジェクトことができることをディレクトリツリー構造のようにオブジェクトを構築するには?

[ 
    { 
     "text": "folder1", 
     "iconCls": "constant folder icon", 
     "items": [ 
      { 
       "text": "subfolder1", 
       "iconCls": "constant folder icon", 
       "folderData":[ 
        { 
         "icon": "constant file icon", 
         "text": "file.docx" 
        } 
       ] 
      } 
     ] 
     "folderData":[ 
      { 
       "icon": "constant file icon", 
       "text": "file.xml" 
      } 
     ] 
    } 
] 

答えて

0

ようにする必要があります:私はいくつかの便利なオンラインツールを使用

public class Directory 
{ 
    public string text { get; set; } 
    public string iconCls { get; set; } 
    public List<FolderData> folderData { get; set; } 
    public List<Directory> items { get; set; } 

    public class FolderData 
    { 
     public string icon { get; set; } 
     public string text { get; set; } 
    } 

    public class Item 
    { 
     public string text { get; set; } 
     public string iconCls { get; set; } 
     public List<FolderData> folderData { get; set; } 
    } 
} 

public class FolderData 
{ 
    public string Text { get; set; } 
    public Image IconCls { get; set; } 
} 

public class Folder 
{ 
    public string Text { get; set; } 
    public Image IconCls { get; set; } 
    public List<Folder> Items { get; set; } 

    public List<FolderData> FolderDatas { get; set; } 
} 
+0

この構造では別のフォルダ内にフォルダを保存できないと思いますが、 n個のフォルダとファイルを持つフォルダは1レベルしかありません –

+0

なぜFolderDataプロパティを使用しますか?申し訳ありませんが、わかりません。フォルダやファイルが入っているサブフォルダはどうですか? –

+0

この構造体では、 'Items'リストに他の' Folder'オブジェクトを格納し、構造体のようなツリーを作成することができます –

0

これは、同等のC#クラスでありますjsonとの作業:

Json viewer

C# class generator from json

+0

私はこれが実際に要件を満たしていないと思います。アイテムにサブアイテムがある場合はどうなりますか? FolderDataはなぜリストですか? –

+0

@RomanoZumbéあなたは正しいです、それはツールで生成されたC#クラスです。私はそれを修正する – opewix

+0

今、あなたは無駄なクラス 'Item'を持っています。これを削除すると、基本的には私が提供したコードと同じコードになります; –

関連する問題