use*_*111 4 c# json datagridview winforms deserialization
json数据,我来自 HTTPWebResponse
[{ "testId":1, "测试名": "HTML", "MinScore是":20, "得分":40, "日期": "2014年12月2日", "状态": "通过"},{ "testId":1, "测试名": "JAVA", "MinScore是":20, "分数":10, "日期": "2014年12月2日", "状态": "FAILED"}]
HttpResponseMessage Response = await client.PostAsync("http://motivtechindia.com/quiz/ws/empquizs", content);
int statusCode = (int)Response.StatusCode;
string results = await Response.Content.ReadAsStringAsync();
MessageBox.Show(results);`enter code here`
Run Code Online (Sandbox Code Playgroud)
___________________________________________________________________________________________消息框显示:
[{ "testId":1, "测试名": "HTML", "MinScore是":20, "得分":40, "日期": "2014年12月2日", "状态": "通过"},{ "testId":1, "测试名": "JAVA", "MinScore是":20, "分数":10, "日期": "2014年12月2日", "状态": "FAILED"}]
现在请告诉我如何deserilise并在datagridview中显示它!
Mik*_*oud 28
所以这很简单:
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; }
}
Run Code Online (Sandbox Code Playgroud)
Json.NET从这里拉入NuGet包http://www.nuget.org/packages/Newtonsoft.Json/6.0.3.
var result = JsonConvert.DeserializeObject<List<JsonResult>>(input);
Run Code Online (Sandbox Code Playgroud)
DataGridViewdataGridView.DataSource = result;
Run Code Online (Sandbox Code Playgroud)
注意:这是绑定到网格的最原始的方式.您可以利用更多选项.想到的是,关闭AutoGenerateColumns并定义自己的列; 设计师驱动的工作,所以它不会影响我提供的代码.
小智 7
有一种更简单的方法可以做到这一点。您不需要创建一个新类。只需执行以下操作:
DataTable dataTable = (DataTable)JsonConvert.DeserializeObject(jsonString, (typeof(DataTable)));
dataGridView.DataSource = dataTable;
Run Code Online (Sandbox Code Playgroud)
不需要自定义类。不过,您仍然需要 Newtonsoft。