2016-09-18 122 views
0

我想填充一个datagridview(dgvNachrichten)。C#JSON.net填充DataGridView

它有两列(“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窗体出现,但没有内容... “Datum “在我的JSON中必须出现在”Datum“列中(每个Datum都有一个新行),而”Nachrichten“也是如此。

也许有人可以帮我吗?

回答

1

您必须JSON文件映射data属性值:

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

也结合DataGridView到集合:

dgvNachrichten.DataSource = des.data; 

不要忘记处置WebClientStreamReader

+0

嗯,这并没有工作...仍然没有文字在网格中... – Francis

+0

@Francis - 见更新。 –

+0

完美。非常感谢你! – Francis