You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinForms中Newtonsoft.Json反序列化JSON数组到Dictionary异常问题问询

问题原因

  • 待反序列化的JSON根结构是数组(用[]包裹),但代码里指定的反序列化目标类型是Dictionary<string, Diskop>,字典要求JSON根是对象(用{}包裹的键值对结构),类型不匹配直接触发抛出异常。
  • Diskop类的继承逻辑多余:你提供的JSON里每个元素只有isim、no、puan三个普通属性,没有动态键值对的嵌套字典结构,继承Dictionary<string, Diskop>会导致反序列化逻辑异常。

解决方案

步骤1:修正Diskop类定义

移除不必要的Dictionary继承,改为普通POCO类:

internal class Diskop
{
    public string isim { get; set; }
    public int no { get; set; }
    public int puan { get; set; }
}

步骤2:修正反序列化目标类型

把反序列化目标从Dictionary<string, Diskop>改为List<Diskop>,匹配JSON的数组结构:

List<Diskop> data = JsonConvert.DeserializeObject<List<Diskop>>(res.Body.ToString());

可选:业务需要字典时手动转换

如果后续逻辑需要使用字典结构,可以在反序列化为列表后手动转换:

// 示例:以no字段为键构造字典
Dictionary<int, Diskop> dataDict = data.ToDictionary(x => x.no, x => x);
// 若以isim为键需要提前确认字段无重复值,否则会触发重复键异常

内容的提问来源于stack exchange,提问作者Menque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:06:04