【问题标题】:How to display JSON data in a DataGridView in WinForms?如何在 WinForms 的 DataGridView 中显示 JSON 数据?
【发布时间】:2014-05-20 15:02:12
【问题描述】:

这是我拥有的 JSON 数据:

{"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"}

如何在 DataGridView 中显示它?

【问题讨论】:

    标签: c# json winforms datagridview deserialization


    【解决方案1】:

    所以这很简单:

    1. 声明要反序列化的类。
    2. 获取 Json.NET NuGet 包。
    3. 反序列化字符串。
    4. 绑定DataGridView

    声明一个要反序列化的类

    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; }
    }
    

    获取 Json.NET NuGet 包

    从这里http://www.nuget.org/packages/Newtonsoft.Json/6.0.3 拉入Json.NET NuGet 包。

    反序列化字符串

    var result = JsonConvert.DeserializeObject<List<JsonResult>>(input);
    

    绑定DataGridView

    dataGridView.DataSource = result;
    

    注意:这是绑定到网格的最原始方式。您可以利用更多选项。想到的一个是,关闭AutoGenerateColumns 并定义自己的列;设计师驱动的工作,因此不会影响我提供的代码。

    【讨论】:

      【解决方案2】:

      有一种更简单的方法可以做到这一点。您无需创建新课程。只需这样做:

      DataTable dataTable = (DataTable)JsonConvert.DeserializeObject(jsonString, (typeof(DataTable)));
      dataGridView.DataSource = dataTable;
      

      不需要自定义类。不过,您仍然需要 Newtonsoft。

      【讨论】:

        【解决方案3】:
        1. 使用 Newtonsoft.Json.Linq;
        2. 使用 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();
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多