I am stuck with porting and formatting JSON array into ASP:Repeater
JSON Array:
{"root":[{"prog_id":"P1000004","prog_name":"Course1","prog_banner":"","isClientActive":"","courses":[{"course_id":"C1000012","course_name":"Course1-1","course_description":"","course_thumbnail":""},{"course_id":"C1000013","course_name":"Course1-2","course_description":"","course_thumbnail":""}]},{"prog_id":"P1000010","prog_name":"Course2","prog_banner":"1000010.jpg","isClientActive":"active","courses":[{"course_id":"C1000007","course_name":"Course2-1","course_description":"","course_thumbnail":""},{"course_id":"C1000008","course_name":"Course2-2","course_description":"","course_thumbnail":""},{"course_id":"C1000009","course_name":"Course2-3","course_description":"","course_thumbnail":""},{"course_id":"C1000010","course_name":"Course2-4","course_description":"","course_thumbnail":""},{"course_id":"C1000011","course_name":"Course2-5","course_description":"","course_thumbnail":""}]}]}
Current Output:
P1000004: Course1
Canorous_Academy.test.Cours[]
P1000010: Course2
Canorous_Academy.test.Cours[]
Desired Output (Should look like):
Repeater-Item 1
P1000004: Course1
Courses:
Course1-1
Course1-2
Repeater-Item 2
P1000010: Course2
Courses:
Course2-1
Course2-2
Course2-3
Course2-4
Course2-5
What I have tried:
ASP Code
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "prog_id") %>">:<%# DataBinder.Eval(Container.DataItem, "prog_name") %>
<ul>
<li><%# DataBinder.Eval(Container.DataItem, "courses") %></li>
</ul>
</ItemTemplate>
</asp:Repeater>
C# Code
protected void Page_Load(object sender, EventArgs e)
{
string json="{\"root\":[{\"prog_id\":\"P1000004\",\"prog_name\":\"Course1\",\"prog_banner\":\"\",\"isClientActive\":\"\",\"courses\":[{\"course_id\":\"C1000012\",\"course_name\":\"Course1-1\",\"course_description\":\"\",\"course_thumbnail\":\"\"},{\"course_id\":\"C1000013\",\"course_name\":\"Course1-2\",\"course_description\":\"\",\"course_thumbnail\":\"\"}]},{\"prog_id\":\"P1000010\",\"prog_name\":\"Course2\",\"prog_banner\":\"1000010.jpg\",\"isClientActive\":\"active\",\"courses\":[{\"course_id\":\"C1000007\",\"course_name\":\"Course2-1\",\"course_description\":\"\",\"course_thumbnail\":\"\"},{\"course_id\":\"C1000008\",\"course_name\":\"Course2-2\",\"course_description\":\"\",\"course_thumbnail\":\"\"},{\"course_id\":\"C1000009\",\"course_name\":\"Course2-3\",\"course_description\":\"\",\"course_thumbnail\":\"\"},{\"course_id\":\"C1000010\",\"course_name\":\"Course2-4\",\"course_description\":\"\",\"course_thumbnail\":\"\"},{\"course_id\":\"C1000011\",\"course_name\":\"Course2-5\",\"course_description\":\"\",\"course_thumbnail\":\"\"}]}]}";
Rootobject _objRoot = JsonConvert.DeserializeObject<Rootobject>(json);
GetDataTableFromObjects(_objRoot.root);
Repeater1.DataSource = GetDataTableFromObjects(_objRoot.root);
Repeater1.DataBind();
}
public static DataTable GetDataTableFromObjects(object[] objects)
{
if (objects != null && objects.Length > 0)
{
Type t = objects[0].GetType();
DataTable dt = new DataTable(t.Name);
foreach (PropertyInfo pi in t.GetProperties())
{
dt.Columns.Add(new DataColumn(pi.Name));
}
foreach (var o in objects)
{
DataRow dr = dt.NewRow();
foreach (DataColumn dc in dt.Columns)
{
dr[dc.ColumnName] = o.GetType().GetProperty(dc.ColumnName).GetValue(o, null);
}
dt.Rows.Add(dr);
}
return dt;
}
return null;
}
}
public class Rootobject
{
public Root[] root { get; set; }
}
public class Root
{
public string prog_id { get; set; }
public string prog_name { get; set; }
public string prog_banner { get; set; }
public string isClientActive { get; set; }
public Cours[] courses { get; set; }
}
public class Cours
{
public string course_id { get; set; }
public string course_name { get; set; }
public string course_description { get; set; }
public string course_thumbnail { get; set; }
}