How to display JSON data in a DataGridView in WinForms?

后端 未结 3 1070
隐瞒了意图╮
隐瞒了意图╮ 2020-12-14 13:26

This is the JSON data that I have:

{"testId":1,"testName":"HTML","minScore":20,"score":40,"date&qu

相关标签:
3条回答
  • 2020-12-14 14:02

    So this is pretty straight forward:

    1. Declare a class to deserialize into.
    2. Grab the Json.NET NuGet Package.
    3. Deserialize the string.
    4. 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.

    0 讨论(0)
  • 2020-12-14 14:14
    1. using Newtonsoft.Json.Linq;
    2. using System.Net;
    void get_response()
    {
         WebClient wp = new WebClient();
         string url="your json url";
         var response=wp.DownloadString(url)
         get_data(response)
    }
    
    
    void get_data(string response)
    {
        datagridview.Rows.clear();`enter code here`
        JArray fetch= JArray.Parse(response);
        if(fetch.Count()>0)
        {
            for(int i=0;datagridview.Rows.Count>i;i++)
            {
                int n=datagridview.Rows.Add();
                datagridview.Rows[n].Cells[0].Value=fetch[i]["Json 
                ObjectName1"].ToString();
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-14 14:19

    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.

    0 讨论(0)
提交回复
热议问题