How to display JSON data in a DataGridView in WinForms?
44,072
Solution 1
So this is pretty straight forward:
- Declare a class to deserialize into.
- Grab the Json.NET NuGet Package.
- Deserialize the string.
- Bind the
DataGridView
.
Declare a class to deserialize into
public class JsonResult
{
public int testId { get; set; }
public string testName { get; set; }
public int minScore { get; set; }
public int score { get; set; }
public DateTime date { get; set; }
public string status { get; set; }
}
Grab the Json.NET NuGet Package
Pull the Json.NET
NuGet Package in from here http://www.nuget.org/packages/Newtonsoft.Json/6.0.3.
Deserialize the string
var result = JsonConvert.DeserializeObject<List<JsonResult>>(input);
Bind the DataGridView
dataGridView.DataSource = result;
NOTE: this is the most primitive way of binding to the grid. There are many more options that you can leverage. One that comes to mind is, turning off AutoGenerateColumns
and defining your own columns; designer-driven work so it wouldn't affect the code I've provided.
Solution 2
There's a simpler way to do this. You don't need to create a new class. Simply do:
DataTable dataTable = (DataTable)JsonConvert.DeserializeObject(jsonString, (typeof(DataTable)));
dataGridView.DataSource = dataTable;
No need for a custom class. You'll still need Newtonsoft though.

Author by
user3166111
Updated on July 05, 2022Comments
-
user3166111 11 months
This is the JSON data that I have:
{"testId":1,"testName":"HTML","minScore":20,"score":40,"date":"12-2-2014","status":"PASSED"}, {"testId":1,"testName":"JAVA","minScore":20,"score":10,"date":"12-2-2014","status":"FAILED"}
How can I show it in a DataGridView?