.NET 3.1使用Newtonsoft.Json反序列化JSON为对象列表报错如何解决
问题解决方法
错误根因
你当前的JSON根节点是单个JSON对象(外层用{}包裹),但反序列化目标类型指定为IEnumerable<Format>集合类型,集合类型要求JSON根必须是数组(外层用[]包裹),二者结构不匹配导致序列化失败。
解决方案
方案1:不修改JSON,调整反序列化代码(推荐)
你的Format实体类已经完全匹配JSON根对象的结构,直接反序列化为Format类型即可:
// 直接反序列化为单个Format对象 Format formatResult = JsonConvert.DeserializeObject<Format>(File.ReadAllText("mockJson.json")); // 如果确实需要得到List<Format>结构,手动将对象加入列表即可 List<Format> objects = new List<Format> { formatResult }; // 如果你要获取的是内部的Data列表,直接访问属性即可 List<Data> dataList = formatResult.Data;
方案2:修改JSON结构适配集合反序列化
如果业务上确实需要反序列化为集合,将你的JSON外层加上[]改为数组格式即可:
[ { "Id":"2727", "Region":"US", "Data":[ { "Title":"Director", "JobDescription":"Coordinates the department activity", "Department":"HR" }, { "Title":"Programmer", "JobDescription":"Enterprise software developer", "Department":"FR" } ] } ]
修改后你原来的反序列化代码可以正常运行。
内容的提问来源于stack exchange,提问作者Kiralyn
相关产品推荐
相关产品推荐

