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

.NET7项目中反序列化JSON数组抛出System.Text.Json.JsonException错误

解决System.Text.Json反序列化List报错问题

报错信息

System.Text.Json.JsonException: 'The JSON value could not be converted to System.Collections.Generic.List`1[Helpspot.CL.Model.Event]. Path: $ | LineNumber: 0 |

相关代码

测试类定义

class Event {
    public int Year { get; set; }
}

报错的反序列化代码

var json = @"{""event"":[{""Year"":1945},{""Year"":1527}]}";
var list = JsonSerializer.Deserialize<List<Event>>(json);

可正常运行的单对象反序列化代码

var json = @"{""Year"":1945}";
var obj = JsonSerializer.Deserialize<Event>(json);

问题原因

你提供的JSON是一个包含event数组的顶层对象,但你直接尝试将这个顶层对象反序列化为List<Event>类型,两者结构不匹配,导致序列化失败。而单对象的JSON结构和Event类完全对应,所以可以正常解析。

解决方案

方案一:创建匹配JSON结构的包装类

定义一个包含List<Event>属性的包装类,对应JSON的顶层结构:

class EventWrapper {
    public List<Event> Event { get; set; }
}

然后使用包装类进行反序列化:

var wrapper = JsonSerializer.Deserialize<EventWrapper>(json);
var eventList = wrapper.Event;

方案二:直接解析JSON节点提取数组

通过JsonDocument解析JSON,定位到event数组节点后再反序列化:

using var jsonDoc = JsonDocument.Parse(json);
var eventElement = jsonDoc.RootElement.GetProperty("event");
var list = JsonSerializer.Deserialize<List<Event>>(eventElement);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:42:43