0

I'm having a hard time in returning the formatted JSON as an array. My current code already returns JSON as an array but I want to get rid of these bracket first [] to get my desired output.

Controller

public JsonResult GenerateGanttChart() { SPMS_GanttChartLayers ddl = new SPMS_GanttChartLayers(); var data = ddl.GenerateGanttChart(); return Json(data, JsonRequestBehavior.AllowGet); } 

Layer

public IEnumerable<SPMS_GanttChartRootModel> GenerateGanttChart() { List<SPMS_GanttChartModel> child_data = new List<SPMS_GanttChartModel>(); { using (SqlConnection con = new SqlConnection(Conn.MyConn())) { SqlCommand com = new SqlCommand("dbo.sp_SPMS_GanttChart 7078, 1", con); con.Open(); SqlDataReader reader = com.ExecuteReader(); while (reader.Read()) { SPMS_GanttChartModel value = new SPMS_GanttChartModel(); value.id = Convert.ToInt32(reader.GetValue(0)); value.start_date = Convert.ToString(reader.GetValue(1)); value.duration = Convert.ToInt32(reader.GetValue(2)); value.text = Convert.ToString(reader.GetValue(3)); child_data.Add(value); } } } List<SPMS_GanttChartRootModel> array = new List<SPMS_GanttChartRootModel>(); { SPMS_GanttChartRootModel value = new SPMS_GanttChartRootModel(); value.data = child_data; array.Add(value); }; return array; } 

Current Output

[{ "data": [{ "id": 1, "start_date": "11/07/2017 08:00:00 AM", "duration": 23, "text": "Project #1" }, ... ] }] 

Desired Output

{ "data": [{ "id": 1, "start_date": "11/07/2017 08:00:00 AM", "duration": 23, "text": "Project #1" }, ... ] } 
2
  • How are you returning the JSON currently ? The code yoyu shared does not return any Json response. Is this asp.net web api controller ?
    – Shyju
    CommentedNov 14, 2017 at 2:17
  • @Shyju I edited my post. Check if it answer your question.
    – Yuu
    CommentedNov 14, 2017 at 2:29

1 Answer 1

1

Currently you are returning a List<SPMS_GanttChartRootModel> from your GenerateGanttChart method.

Return the SPMS_GanttChartRootModel object.

SPMS_GanttChartRootModel value = new SPMS_GanttChartRootModel(); value.data = child_data; return value; 

Also make sure your method's return type is SPMS_GanttChartRootModel now

public SPMS_GanttChartRootModel GenerateGanttChart() { var child_data = new List<SPMS_GanttChartModel>(); { //your existing code to populate this collection }; var value = new SPMS_GanttChartRootModel(); value.data = child_data; return value; } 

and in your action method, pass this single object to the Json method

public JsonResult GenerateGanttChart() { var ddl = new SPMS_GanttChartLayers(); var data = ddl.GenerateGanttChart(); return Json(data, JsonRequestBehavior.AllowGet); } 
1
  • Perfect. Thank you.
    – Yuu
    CommentedNov 14, 2017 at 2:33

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.