WinForms错误无法将当前JSON数组(例如[1,2,3])反序列化为类型



我有一个这样的代码:

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,Turunc_Uygulama.Diskop]",因为该类型需要Json对象(例如{"name">

这里是json

[ {

"isim":"AHMET UTKU GÖKSAL";,"否":929中,"puan":96}{"isim":"AHMET YASïR YILDIZ";,"否":969中,"puan":95}{"isim":"AKïF ENESÖZDEMïR";,"否":953中,"puan":108}{"isim":"ALïAKTÜRK";,"否":910中,"puan":111}

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 }
}

最新更新