JSON数组反序列化报错求助:无法将数组转为对象
问题分析与解决方案
嘿,我一眼就看穿问题所在了!你碰到的这个反序列化错误,核心原因特别清晰:
Cannot deserialize the current Json array because the type requires a JSON object...
这个报错直白告诉你——你的API返回的是一个JSON数组(用[]包裹的多个对象),但你却试图把它反序列化成单个Class1对象,这就像你拿着一整盒巧克力,非要把它当成一块巧克力来拆,肯定会出问题的呀!
两步帮你搞定:
修正反序列化的目标类型
既然JSON是数组,那你得把反序列化的目标改成集合类型,比如List<Class1>或者Class1[](数组)。把控制器里的代码改成下面这样:// 用List接收数组 List<Class1> items = JsonConvert.DeserializeObject<List<Class1>>(responseData); // 或者用数组接收 // Class1[] items = JsonConvert.DeserializeObject<Class1[]>(responseData);确保类属性和JSON字段正确映射
你现在的Class1类里属性都是something,这和JSON里的heading、company name、href完全不匹配,就算类型对了也没法正确解析。推荐用JsonProperty特性来做映射,既符合C#的命名规范,又能对应JSON里的字段:public class Class1 : ParentObject { [JsonProperty("heading")] public string Heading { get; set; } [JsonProperty("company name")] public string CompanyName { get; set; } [JsonProperty("href")] public string Href { get; set; } }
做完这两步,再运行代码试试,应该就能顺利把JSON数组反序列化成对应的对象集合啦!
内容的提问来源于stack exchange,提问作者user2989761
相关产品推荐
相关产品推荐

