LCMr_music
LCMr_music

Reputation: 35

How can I create aJSON Object from Folder Structure

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

Answers (1)

Fildor
Fildor

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

Related Questions