【问题标题】:WinForms Error Cannot deserialize the current JSON array (e.g. [1,2,3]) into typeWinForms 错误无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型
【发布时间】: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 将内容发布为文本

标签: c# json dictionary deserialization json-deserialization


【解决方案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&lt;string, Diskop&gt; 看起来像磁盘映射,您将使用它:

{ 
"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
  • 不确定我是否理解问题
猜你喜欢
  • 2013-07-19
  • 2019-03-20
  • 2018-12-30
  • 1970-01-01
  • 2020-12-05
  • 2014-03-20
相关资源
最近更新 更多