C# JSON 反序列化异常 ( "Error converting value " ID " to type 'Eng_Tab.JsonData'. Path '[0]', line 1,



我是 Json 的新手 C#。我正在尝试反序列化要显示到数据网格中的 JSON 字符串。我成功地从服务器获取了 JSON 字符串,但在尝试反序列化它时,它会引发以下异常:

Newtonsoft.Json.JsonSerializationException: 转换值时出错 "id"键入"Eng_Tab.JsonData"。路径"[0]",第 1 行,位置 5。---> System.ArgumentException:无法从 System.String 转换或转换 到 Eng_Tab.JsonData。

这是数据类:

公共类 JsonData { public int id { get; set; } 公共字符串 lec { get; set; } 公共字符串 sec1 { get; set; } 公共字符串 sec2 { get; set; } 公共字符串 sec3 { get; set; } 公共字符串 sec4 { get; set; } 公共字符串 sec5 { get; set; } 公共字符串 sec6 { get; set; } 公共字符串 sec7 { get; set; } 公共字符串 sec8 { get; set; } 公共字符串 sec9 { get; set; } 公共字符串 sec10 { get; set; }

    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":"阿卜杜勒拉赫曼 Mohamed401119343000","h3":"10","m3":"0","sec3":"阿卜杜勒拉赫曼 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":"阿卜杜勒拉赫曼 Mohamed401119343000","h10":"0","m10":"0","sec10":"set sec"]

这是我的 C# 代码:

字符串 qry = "de=e1&id=1";

WebRequest request =WebRequest.Create("the php link"+qry);

网络响应响应 = 请求。获取响应();

StreamReader

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

字符串 jsonData = 读取器。ReadToEnd();

jsonData = jsonData.Replace("{", "[").替换("}","]");

MessageBox.Show(jsonData);

列表<JsonData>结果 = JsonConvert.DeserializeObject <List<JsonData>> (jsonData);

metroGrid1.数据源 = 结果;

您需要在 Json 字符串中类型为 JsonData 的对象上进行反序列化。因此,您的 JSON 字符串应如下所示[{"ABC":"PQR", ...}]

最新更新