You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 08:15:29