C#中JSON转List报错:无法将JSON对象反序列化为List<Template>
问题分析与修复方案
错误原因
你的JSON字符串是单个Template对象(外层为{}),但反序列化代码却试图将其转换为List<Template>(该类型要求JSON外层为数组格式[]),导致根层级类型不匹配,触发反序列化错误。
修复方法
方案1:修改反序列化代码(推荐)
直接将反序列化目标类型改为Template,若业务需要列表可手动包装:
// 假设templateData是你的JSON字符串变量 Template template = JsonConvert.DeserializeObject<Template>(templateData.ToString()); // 如需存入列表 List<Template> lstData = new List<Template> { template };
方案2:修改JSON为数组格式
如果业务逻辑必须反序列化为列表,将JSON外层改为数组包裹:
[{"Headers":[{"KeyValue":"Hello AA"},{"KeyValue":"Hello BB"}],"Footers":[{"KeyValue":"Wifi Password : 11112222"}]}]
此时原反序列化代码可正常执行:
List<Template> lstData = JsonConvert.DeserializeObject<List<Template>>(templateData.ToString());
补充说明
你的实体类定义完全正确,Headers和Footers的列表类型与JSON内的数组结构匹配,问题仅出在根层级的类型不匹配上。
内容的提问来源于stack exchange,提问作者CKL
相关产品推荐
相关产品推荐

