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

如何配置Bson序列化器:序列化忽略属性,反序列化保留

实现Bson序列化忽略属性但反序列化保留读取的方案

方法一:使用BsonIgnoreWhenWriting特性

直接在目标属性上标注[BsonIgnoreWhenWriting]特性,这是MongoDB官方驱动原生支持的特性,恰好满足你的需求:序列化时不会将该属性写入Bson文档,但反序列化时依然能从文档中读取该属性值。

示例代码:

public class YourEntity
{
    public ObjectId Id { get; set; }
    
    // 序列化时忽略,反序列化时正常读取
    [BsonIgnoreWhenWriting]
    public string IgnoreOnWriteButReadOnDeserialize { get; set; }
    
    public string NormalProperty { get; set; }
}

方法二:通过ClassMap手动配置

如果不想用特性(比如需要动态配置规则),可以通过BsonClassMap手动设置属性的序列化逻辑:

示例代码:

BsonClassMap.RegisterClassMap<YourEntity>(cm =>
{
    cm.AutoMap();
    // 定位目标属性,设置序列化时忽略
    cm.GetMemberMap(x => x.IgnoreOnWriteButReadOnDeserialize)
      .SetIgnoreIfDefault(false) // 确保默认值不影响反序列化逻辑
      .SetIgnoreWhenWriting(true);
});

补充说明

  • BsonIgnoreWhenWriting无需自定义序列化器,直接使用即可,简单高效。
  • 若使用的是其他Bson序列化库(如Newtonsoft.Json的Bson转换器),可通过自定义ContractResolver实现类似逻辑:序列化阶段跳过目标属性,反序列化阶段保留解析逻辑。

内容的提问来源于stack exchange,提问作者Feeze

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:15:52