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

Newtonsoft.Json反序列化异常:JSON对象转List<T>失败问题排查

问题分析与解决方案

你的JSON数据格式本身没问题,报错的核心原因是:你试图将一个JSON对象反序列化为List<T>类型,但List<T>要求JSON的根结构是数组,而你的JSON根是包含userHBList键的对象。

正确的处理方法

方法1:从JObject中提取数组直接转换

既然已经解析成了JObject,可以直接定位到userHBList对应的数组节点,再转换为List<UserHBList>:

JObject json = JObject.Parse(stringJson);
List<UserHBList> userHBLists = json["userHBList"].ToObject<List<UserHBList>>();

方法2:定义根对象类,直接反序列化整个JSON

如果不想手动解析JObject,可以创建一个匹配整个JSON结构的根类,直接反序列化原始字符串:

// 定义匹配JSON结构的根类
public class UserHBResponse
{
    public List<UserHBList> userHBList { get; set; }
}

// 直接反序列化原始JSON字符串
var response = JsonConvert.DeserializeObject<UserHBResponse>(stringJson);
List<UserHBList> userHBLists = response.userHBList;

方法3:提取JArray后转换(更显式的写法)

JObject json = JObject.Parse(stringJson);
JArray userHBArray = (JArray)json["userHBList"];
List<UserHBList> userHBLists = userHBArray.ToObject<List<UserHBList>>();

原代码报错原因

你之前的代码JsonConvert.DeserializeObject<List<UserHBList>>(json.ToString())是把整个JObject(即外层的JSON对象)转成字符串后去反序列化为List,而JSON对象的格式是{...},List需要的是[...]格式的数组,所以序列化库会抛出类型不匹配的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:49:55