C#JSON.net填充DataGridView

时间:2016-09-18 15:53:53

标签: c# json datagridview json.net

我想填充datagridview(dgvNachrichten)。

它有两列(“Datum”和“Nachrichten”)。

这是我的代码:

try
{
    WebClient webClient = new WebClient();
    webClient.DownloadFile(Config.URL_MAIN, @Environment.GetEnvironmentVariable("TEMP") + "\\" + "temp.json");
    StreamReader sr = new StreamReader(@Environment.GetEnvironmentVariable("TEMP") + "\\" + "temp.json");
    string line = sr.ReadToEnd();
    var response = line;

    var des = (MyClass)JsonConvert.DeserializeObject(response, typeof(MyClass));
    dgvNachrichten.DataSource = des;
}
catch (Exception ex)
{

    MessageBox.Show(ex.ToString());
}

我的JSON看起来像这样:

{ "nachrichten": [ { "Nachricht": "text", "Datum": "datum" }, { "Nachricht": "text", "Datum": "datum" }, { "Nachricht": "text", "Datum": "datum" }, { "Nachricht": "text", "Datum": "datum" } ] }

这是我的课程:

public class MyClass
{
    public List<Nachrichten_Felder> data { get; set; }
}
public class Nachrichten_Felder
{
    public string Datum { get; set; }
    public string Nachricht { get; set; }
}

下载工作正常,几秒钟后出现带有GridView的表单,但没有内容...... 我的JSON中带有“Datum”的部分必须出现在“Datum”列中(对于每个Datum一个新行)和“Nachrichten”相同。

也许有人可以帮助我?

1 个答案:

答案 0 :(得分:1)

您必须将data属性映射到json文件中的值:

public class MyClass
{
    [JsonProperty("nachrichten")]
    public List<Nachrichten_Felder> data { get; set; }
}

同时将DataGridView绑定到集合:

dgvNachrichten.DataSource = des.data;

不要忘记处置WebClientStreamReader