В следующем фрагменте теста демонстрируется исключение InvalidCastException, возникающее в SerializeObject, когда значение объекта равно нулю или даже BsonNull.Value.Если значение изменяется на 42, сериализация работает нормально. Действуют
var bson = new BsonDocument
{
{ "key", null /*BsonNull.Value*/ }
};
// the following fails with an inexplicable InvalidCastException...
var json = Newtonsoft.Json.JsonConvert.SerializeObject(
bson,
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Include
});
Console.WriteLine(json);
«с использованием MongoDB.Bson» и «с использованием Newtonsoft.Json».Версия Json v12.0.1.
Обратите внимание, что я также рассмотрел использование метода BsonDocument ToJson, но у него возникают другие проблемы (работа со значениями перечисления), поэтому я больше не рассматриваю это как обходной путь.