使用System.Text.Json反序列化JSON失败,请求排查解决
问题排查与解决
错误原因
你的JSON字符串顶层结构是一个对象(包含contacts属性的容器),而非直接的List<Contacts>数组。但你直接调用JsonSerializer.Deserialize<List<Contacts>>()尝试将整个JSON对象转换为列表,类型不匹配,因此抛出转换异常。
解决方案
需要定义一个匹配JSON顶层结构的根模型类,再通过该类完成反序列化,最终提取contacts列表:
1. 添加根模型类
public class ContactsRoot { [JsonPropertyName("contacts")] public List<Contacts>? Contacts { get; set; } }
2. 修改反序列化代码
var root = JsonSerializer.Deserialize<ContactsRoot>(myJsonString); var myContacts = root?.Contacts;
这样就能正确解析JSON中的contacts数组,避免类型转换错误。
可选方案(无需新增类)
如果不想额外定义根类,也可以使用JsonDocument手动解析:
using var doc = JsonDocument.Parse(myJsonString); var contactsElement = doc.RootElement.GetProperty("contacts"); var myContacts = contactsElement.Deserialize<List<Contacts>>();
内容的提问来源于stack exchange,提问作者bilpor
相关产品推荐
相关产品推荐

