C# Json 反序列化异常(“将值“id”转换为类型“Eng_Tab.JsonData”时出错。路径“[0]”,第 1 行,位置 5。”)
Posted
技术标签:
【中文标题】C# Json 反序列化异常(“将值“id”转换为类型“Eng_Tab.JsonData”时出错。路径“[0]”,第 1 行,位置 5。”)【英文标题】:C# Json Deserialize exception ("Error converting value "id" to type 'Eng_Tab.JsonData'. Path '[0]', line 1, position 5.") 【发布时间】:2016-06-22 08:13:21 【问题描述】:我是 C# 的 Json 新手。我正在尝试反序列化 JSON 字符串以显示到数据网格中。 我成功地从服务器获取了 JSON 字符串,但是在尝试反序列化它时,它抛出了这个异常:
Newtonsoft.Json.JsonSerializationException:转换值时出错 “id”键入“Eng_Tab.JsonData”。路径“[0]”,第 1 行,位置 5。---> System.ArgumentException:无法从 System.String 转换或转换 到 Eng_Tab.JsonData。
这是数据类:
公共类 JsonData 公共 int id 获取;放; 公共字符串 lec 得到;放; 公共字符串 sec1 获取;放; 公共字符串 sec2 获取;放; 公共字符串 sec3 获取;放; 公共字符串 sec4 获取;放; 公共字符串 sec5 获取;放; 公共字符串 sec6 获取;放; 公共字符串 sec7 获取;放; 公共字符串 sec8 获取;放; 公共字符串 sec9 获取;放; 公共字符串 sec10 获取;放;
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":"set sec"]
这是我的 C# 代码:
字符串 qry = "de=e1&id=1";
WebRequest request =WebRequest.Create("php链接"+qry);
WebResponse 响应 = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(),Encoding.ASCII);
string jsonData = reader.ReadToEnd();
jsonData = jsonData.Replace("", "[").Replace("","]");
MessageBox.Show(jsonData);
List
<JsonData>
result = JsonConvert.DeserializeObject<List<JsonData>>
(jsonData);metroGrid1.DataSource = 结果;
【问题讨论】:
【参考方案1】:您需要在 Json 字符串中对 JsonData
类型的对象进行反序列化。因此,您的 JSON 字符串应类似于 ["ABC":"PQR", ...]
【讨论】:
以上是关于C# Json 反序列化异常(“将值“id”转换为类型“Eng_Tab.JsonData”时出错。路径“[0]”,第 1 行,位置 5。”)的主要内容,如果未能解决你的问题,请参考以下文章
将值“utf-8”转换为类型“System.Text.Encoding”时出错
C# JSON 将文件反序列化为对象列表失败,并将字符串转换为集合错误