Skip to main content

Create complex JSON structure using List and Dictionary

In this blog we will learn about creating complex JSON structure using List and Dictionary.
Before we start I assume that you have basic idea about Dictionary and List. If not please check out this video.
Dictionary in C#

Now let's start!
First of all I'm going to show you a JSON structure which I want to create.
Please observe above Json structure.

 [{  
      "UserId": "0",  
      "ResorceName": "Employee 0",  
      "TimeRecords": [{  
           "Date": "2016-10-25",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-26",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-27",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-28",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-29",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-30",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-31",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-01",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-02",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-03",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-04",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-05",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-06",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-07",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-08",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-09",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-10",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-11",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-12",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-13",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-14",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-15",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-16",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-17",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-18",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-19",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-20",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-21",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-22",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-23",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-24",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-25",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-26",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-27",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-28",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-29",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-30",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-01",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-02",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-03",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-04",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-05",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-06",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-07",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-08",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-09",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-10",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-11",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-12",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-13",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-14",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-15",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-16",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-17",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-18",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-19",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-20",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-21",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-22",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-23",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }]  
 }, {  
      "UserId": "1",  
      "ResorceName": "Employee 1",  
      "TimeRecords": [{  
           "Date": "2016-10-25",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-26",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-27",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-28",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-29",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-30",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-10-31",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-01",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-02",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-03",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-04",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-05",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-06",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-07",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-08",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-09",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-10",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-11",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-12",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-13",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-14",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-15",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-16",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-17",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-18",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-19",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-20",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-21",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-22",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-23",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-24",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-25",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-26",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-27",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-28",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-29",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-11-30",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-01",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-02",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-03",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-04",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-05",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-06",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-07",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-08",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-09",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-10",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-11",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-12",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-13",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-14",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-15",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-16",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-17",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-18",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-19",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-20",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-21",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-22",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }, {  
           "Date": "2016-12-23",  
           "Tasks": ["Task 0", "Task 1", "Task 2", "Task 3", "Task 4", "Task 5"]  
      }]  
 }]  
Points to remember before we start.


  • Key - Value Pair always added in dictionary.
  • List values are can be added in dictionary to give Key to List values.
  • Combination of List + Dictionary should be added in List having Dictionary.
Above three components are key component to create any Kind of JSON structure.
Now Let's check C# Code.


 protected void Button1_Click(object sender, EventArgs e)  
     {  
       DateTime currentDate = DateTime.Now;  
       DateTime startDate = currentDate.AddDays(-30);  
       DateTime enddate = currentDate.AddDays(30);  
       int resId = 0;  
       string resname = string.Empty;  
       List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();  //<<1>>
       Dictionary<string, object> row;  //<<2>>
       for (int i = 0; i <= 2; i++)  
       {  
         row = new Dictionary<string, object>();  
         resId = Convert.ToInt32(i.ToString());  
         resname = Convert.ToString("Employee " + i.ToString());  
         row.Add("UserId", resId.ToString());  
         row.Add("ResorceName", resname);  
         List<Dictionary<string, object>> TimeMode = new List<Dictionary<string, object>>(); //<<3>>  
         for (DateTime date = startDate; date < enddate; date = date.AddDays(1.0))  
         {  
           Dictionary<string, object> modes;  // <<4>>
           modes = new Dictionary<string, object>();  
           DateTime mydate = new DateTime(1900, 01, 01);  
           string cDate1 = date.ToString("yyyy-MM-dd");  
           string cDate2 = mydate.ToString("yyyy-MM-dd");  
           modes.Add("Date", cDate1);  
           List<string> taskss = new List<string>();  // <<5>>
           for (int k = 0; k <= 5; k++)  
           {  
             taskss.Add("Task " + k.ToString());  
           }  
           modes.Add("Tasks", taskss);  
           TimeMode.Add(modes);  
         }  
         row.Add("TimeRecords", TimeMode);  
         rows.Add(row);  
       }  
       string x = giveJson(rows);  
     }  
     private string giveJson(object convertme)  
     {  
       string jstr = JsonConvert.ExportToString(convertme);  
       return jstr;  
     }  

Note: To create a Json string I used Jayrock.JSON dll which is open source.

In above code snippet observe Bold lines and look at our JSON structure.
Now let's discuss about it .

From JSON observe a Key Tasks which have a List like Task 1 ,Task 2.. to create a List we took List tasks in code. Observe <<5>> from bold letter from above snippet.

Now to give key to Tasks we need one Dictionary so we used a dictionary named modes. Observe <<4>> from bold letter from above snippet.

Now cobination of Date and Tasks should be added having a Key TimeRecords. To achieve this we took List having Dictionary Timemode .  Observe <<3>> from above code snippet.

To add Keys Like UserId , ResorceName ,TimeRecords we have a dictionary row . Observe <<2>> from above code snippet.

And finally all the keys are added in one Final List having Dictionary named rows. Observe <<1>> from above code snippet.

Here giveJSON() function will return Json string. This function uses core function from Jayrock.Json dll.

Don't forget to subscribe me!
For More Updates stay connected On : Learn2All Facebook Page
Amazing Concepts in Video :  Video On YouTube
Download a Code Using this Link : Share JsonDemo.zip - 74 KB

If you still have any doubts related this concept mail me at 
dhruvinshah16@gmail.com





Comments