WinForms 错误无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型
Posted
技术标签:
【中文标题】WinForms 错误无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型【英文标题】:WinForms Error Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 【发布时间】:2022-01-02 06:36:55 【问题描述】:我有这样的代码:
Dictionary<string, Diskop> data = JsonConvert.DeserializeObject<Dictionary<string, Diskop>>(res.Body.ToString());
这是 Diskop 类:
internal class Diskop : Dictionary<string, Diskop>
public string isim get; set;
public int no get; set;
public int puan get; set;
我得到了那个错误:
Newtonsoft.Json.JsonSerializationException: '无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'System.Collections.Generic.Dictionary`2[System.String,Turuncu_Uygulama.Diskop]' 因为type 需要一个 JSON 对象(例如 "name":"value")才能正确反序列化。
这是json
[
"isim" : "AHMET UTKU GÖKSAL", “不”:929, “普安”:96 , “isim”:“艾哈迈德·亚西尔·耶尔迪兹”, “不”:969, “普安”:95 , "isim" : "AKİF ENES ÖZDEMİR", “不”:953, “普安”:108 , “isim”:“ALİAKTÜRK”, “不”:910, “普安”:111
【问题讨论】:
你必须发布 json,如果你需要一些帮助,我猜你使用的代码来获取它 我发布了 json 我如何发布文件 @Menque 将内容发布为文本 【参考方案1】:Diskop 应如下所示:
internal class Diskop
[JsonProperty("isim")]
public string Isim get; set;
[JsonProperty("no")]
public int No get; set;
[JsonProperty("puan")]
public int Puan get; set;
Deser 应该看起来像:
var data = JsonConvert.DeserializeObject<Diskop[]>(res.Body.ToString());
或者喜欢:
var data = JsonConvert.DeserializeObject<List<Diskop>>(res.Body.ToString());
因为你的 json 代表一个 Diskops 数组:
[
"isim" : "AHMET UTKU GÖKSAL", "no" : 929, "puan" : 96 ,
"isim" : "AHMET YASİR YILDIZ", "no" : 969, "puan" : 95 ,
"isim" : "AKİF ENES ÖZDEMİR", "no" : 953, "puan" : 108 ,
"isim" : "ALİ AKTÜRK", "no" : 910, "puan" : 111
]
如果Dictionary<string, Diskop>
看起来像磁盘映射,您将使用它:
"a": "isim" : "AHMET UTKU GÖKSAL", "no" : 929, "puan" : 96 ,
"b": "isim" : "AHMET YASİR YILDIZ", "no" : 969, "puan" : 95 ,
"c": "isim" : "AKİF ENES ÖZDEMİR", "no" : 953, "puan" : 108 ,
"d": "isim" : "ALİ AKTÜRK", "no" : 910, "puan" : 111
【讨论】:
感谢您的关注 但 DeserializeObject 仅反序列化 name:value 数组。所以“a”只能有一个值。我如何反序列化多值数组@Caius Jard 不确定我是否理解问题以上是关于WinForms 错误无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型的主要内容,如果未能解决你的问题,请参考以下文章
无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型
无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“ConsoleAppTest01.Location”,因为该类型需要 JSON 对象
无法将当前 JSON 数组(例如 [1,2,3])反序列化为具有复杂和嵌套对象的类型
无法将当前 JSON 数组(例如 [1,2,3])反序列化为“System.Collections.Generic.Dictionary”类型
无法将当前JSON数组(例如[1,2,3])反序列化为“模型”类型
无法将当前 JSON 对象(例如 "name":"value")反序列化为类型“Value[]”,因为该类型需要 JSON 数组(例如 [1,2,3])