2016-03-08 42 views
0

我是Json與C#的新手。我試圖反序列化JSON字符串以顯示到數據網格中。 我成功獲得來自服務器的JSON字符串,但試圖反序列化時,拋出該異常:C#Json反序列化異常(「Error conversion value」id「to type'Eng_Tab.JsonData'。Path'[0]',line 1,position 5.」)

Newtonsoft.Json.JsonSerializationException:錯誤的轉換數值 「ID」鍵入「Eng_Tab.JsonData」。路徑'[0]',第1行,位置5. ---> System.ArgumentException:無法強制轉換或從System.String 轉換爲Eng_Tab.JsonData。

這是數據類:

公共類JsonData { 公衆詮釋ID {獲得;組; } public string lec {get;組; } public string sec1 {get;組; } public string sec2 {get;組; } public string sec3 {get;組; } public string sec4 {get;組; } public string sec5 {get;組; } public string sec6 {get;組; } public string sec7 {get;組; } public string sec8 {get;組; } public string sec9 {get;組; } public string sec10 {get;組; }

public int h { get; set; } 
    public int h1 { get; set; } 
    public int h2 { get; set; } 
    public int h3 { get; set; } 
    public int h4 { get; set; } 
    public int h5 { get; set; } 
    public int h7 { get; set; } 
    public int h8 { get; set; } 
    public int h9 { get; set; } 
    public int h10 { get; set; } 

    public int m { get; set; } 
    public int m1 { get; set; } 
    public int m2 { get; set; } 
    public int m3 { get; set; } 
    public int m4 { get; set; } 
    public int m5 { get; set; } 
    public int m6 { get; set; } 
    public int m7 { get; set; } 
    public int m8 { get; set; } 
    public int m9 { get; set; } 
    public int m10 { get; set; } 

} 

這裏是JSON字符串:

[ 「ID」 爲 「1」, 「H」: 「7」, 「M」: 「0」, 「LEC」 :「」,「h1」:「0」,「m1」:「0」,「sec1」:「」,「h2」:「10」,「m2」:「0」,「sec2」:「Abdelrahman Mohamed401119343000「」h3「:」10「,」m3「:」0「,」sec3「:」Abdelrahman Mohamed401119343000「,」h4「:」5「,」m4「:」0「,」sec4「 A401119343000" , 「H5」: 「5」, 「M5」: 「0」, 「sec5」: 「A401119343000」, 「H6」: 「5」, 「M6」: 「0」, 「sec6」: 「A401119343000」 「H7」: 「5」, 「M7」: 「0」, 「sec7」: 「A401119343000」, 「H8」: 「5」, 「M8」: 「0」, 「sec8」: 「A401119343000」,」 h9「:」18「,」m9「:」0「,」sec9「:」Abdelrahman Mohamed401119343000" , 「H10」: 「0」, 「M10」: 「0」, 「SEC10」: 「設定秒」]

,這是我的C#代碼:

串QRY =「de = e1 & id = 1」;

WebRequest request = WebRequest.Create(「php link」+ qry);

WebResponse response = request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(),Encoding.ASCII);

string jsonData = reader.ReadToEnd(); jsonData = jsonData.Replace(「{」,「[」).Replace(「}」,「]」);}};}}};

MessageBox.Show(jsonData);

列表<JsonData> result = JsonConvert。DeserializeObject <List<JsonData>>(jsonData);

metroGrid1.DataSource = result;

回答

0

您需要在類型JsonData的對象中使用Json字符串進行反序列化。因此,你的JSON字符串應該看起來像[{"ABC":"PQR", ...}]

+0

這很好,非常感謝 –