MongoDB反序列化报错:JToken无合适构造函数/Add方法求解
问题原因
你的MongoDB文档中存在accomplishment_projects字段,但Root类未定义对应的属性。MongoDB驱动反序列化时尝试将该字段映射为JToken类型,而该类型无法被正确实例化(尤其是作为集合类型),因此抛出异常。
解决方案1:忽略未知字段
在Root类上添加[BsonIgnoreExtraElements]特性,让MongoDB驱动自动忽略文档中不存在于类中的字段:
[BsonIgnoreExtraElements] public class Root { [BsonId] public string Id { get; set; } = Guid.NewGuid().ToString(); public string Url { get; set; } public string profile_pic_url { get; set; } public string background_cover_image_url { get; set; } public string first_name { get; set; } public string last_name { get; set; } public string full_name { get; set; } public string country { get; set; } public List<Experience> experiences { get; set; } public List<Education> education { get; set; } }
解决方案2:添加缺失属性(若需要该字段数据)
如果需要accomplishment_projects字段的数据,需在Root类中定义对应属性。根据字段实际结构,可能需要先创建模型类:
// 先定义accomplishment_projects对应的模型类(根据实际字段调整) public class AccomplishmentProject { public string ProjectName { get; set; } public string Description { get; set; } // 其他字段... } // 在Root类中添加属性 public class Root { [BsonId] public string Id { get; set; } = Guid.NewGuid().ToString(); // 现有属性... public List<AccomplishmentProject> accomplishment_projects { get; set; } }
验证
修改后重新调用GetAllData方法,异常即可解决。若选择方案2,需确保模型类属性与MongoDB文档中的字段名、类型完全匹配。
内容的提问来源于stack exchange,提问作者Meriç Özkayagan
相关产品推荐
相关产品推荐

