【发布时间】:2020-10-17 06:49:40
【问题描述】:
我写了一个自定义的 Bson 序列化器属性。
当传递给 Serialize 方法的值是 ValueKind "Object" 时,它可以正常工作。
但如果 ValueKind 是任何其他数据类型,如字符串、int、bool 等,则会出现“无法从 BsonType 字符串反序列化 BsonDocument”的错误
如何使其适用于所有数据类型并使用属性进行装饰。
型号:
[BsonSerializer(typeof(CustomSerialize))]
[BsonElement("response")]
public object response { get; set; }
CustomSerialize 类:
public class CustomSerialize : SerializerBase<Object>
{
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)
{
var element = (JsonElement)value;
BsonDocument document = BsonDocument.Parse(element.GetRawText());
var serializer = BsonSerializer.LookupSerializer(typeof(BsonDocument));
serializer.Serialize(context, document.AsBsonValue);
}
public override object Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
var serializer = BsonSerializer.LookupSerializer(typeof(BsonDocument));
var document = serializer.Deserialize(context, args);
var bsonDocument = document.ToBsonDocument();
var result = BsonExtensionMethods.ToJson(bsonDocument);
return JsonSerializer.Deserialize<object>(result);
}
}
【问题讨论】:
标签: c# mongodb serialization bson