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

使用Newtonsoft.JSON反序列化JSON数组失败问题求助

解决Newtonsoft.JSON反序列化数组到单个对象的错误

这个错误的原因很明确:你的JSON数据是数组结构(被[]包裹,哪怕只有一个元素),但你却试图把它反序列化为单个Country对象——Newtonsoft.Json没办法把一个数组直接转换成单个对象,所以抛出了类型不匹配的异常。

这里有两种简单的解决方法:

方法一:反序列化为集合/数组类型

直接把目标类型改成List<Country>或者Country[],和JSON的数组结构对应上:

// 方法1:反序列化为List<Country>
var countryList = JsonConvert.DeserializeObject<List<Country>>(content);
// 如果只需要第一个元素,可以用FirstOrDefault()获取
var targetCountry = countryList?.FirstOrDefault();

// 方法2:反序列化为Country数组
var countryArray = JsonConvert.DeserializeObject<Country[]>(content);
var targetCountryFromArray = countryArray?.FirstOrDefault();

这样序列化器就能正确识别JSON的数组结构,把里面的元素逐个转换成Country对象。

方法二:先解析为JArray再提取单个对象

如果你确定这个JSON数组永远只会有一个元素,也可以先把JSON解析成JArray,再把第一个元素转换成Country对象:

using Newtonsoft.Json.Linq;

var jArray = JArray.Parse(content);
var targetCountry = jArray.First.ToObject<Country>();

另外要确认你的Country类属性和JSON字段名称完全匹配——你现在的类定义是没问题的,属性名id、name、link、iso和JSON里的字段一一对应,不需要额外添加JsonProperty特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:02:33