Reputation: 35
I have folder structure as follow:
- directory1
- subdirectory1
- sub-subdirectory1
- sub-subdirectory2
- subdirectory2
- subdirectory3
- directory2
- subdirectory1
- sub-subdirectory1
- sub-subdirectory2
- sub-subdirectory3
- sub-subdirectory2
- subdirectory2
- subdirectory3
I want to Automate getting the folder structure in C#, so as to populate the cascading dropdown, then parse the structure to the dropdown HTML, using JavaScript. here is the object I want to create based on my directories:
{
"directory1": {
"subdirectory1": ["sub-subdirectory1", "sub-subdirectory2", "sub-subdirectory3"],
"subdirectory2": ["sub-subdirectory1", "sub-subdirectory2", "sub-subdirectory3"],
"subdirectory3": ["sub-subdirectory1", "sub-subdirectory2", "sub-subdirectory3"]
},
"directory2": {
"subdirectory1": ["sub-subdirectory1", "sub-subdirectory2", "sub-subdirectory3"] ,
"subdirectory2": ["sub-subdirectory1", "sub-subdirectory2", "sub-subdirectory3"]
}
No Hard Coding, how can I create this nested json Object from directory structure in C#
Upvotes: 0
Views: 216
Reputation: 16084
If directories is all you are interested in, I'd serialize a model like this:
public class MyDirModel
{
public string Name {get; set;}
public List<MyDirModel> SubDirectories {get; set;} = new List<MyDirModel>();
}
That would not produce exactly your JSON, but - what I think to be - an even better one, since you won't be restricted to 3 layers of depth.
To be more specific, this would then probably look like:
[
{
"name": "directory1",
"subdirectories": [
{ "name": "subdirectory1",
"subdirectories": [
{ "name": "sub-subdirectory1", "subdirectories": [] },
{ "name": "sub-subdirectory2", "subdirectories": [] },
{ "name": "sub-subdirectory3", "subdirectories": [] }
]},
{ "name": "subdirectory2",
"subdirectories": []},
{ "name": "subdirectory3",
"subdirectories": []}
]
},
{
name: "directory2",
subdirectories: [ /* shortened for brevity */ ]
}
]
Upvotes: 1