无法使用 Newtonsoft 序列化程序从 BSON 反序列化具有集合属性的对象



我想序列化以下对象:

class Zoo
{
    public List<Animal> Animals { get; set; }
}
class Animal
{
    public Animal(string name)
    {
        Name = name;
    }
    public string Name { get; private set; }
}
class Dog : Animal
{
    public Dog(string name) : base(name)
    {
    }
}
class Cat : Animal
{
    public Cat(string name) : base(name)
    {
    }
}

使用自定义绑定器将其序列化/反序列化为 JSON 或从 JSON 反序列化不是问题:

        var settings = new JsonSerializerSettings
        {
            TypeNameHandling = TypeNameHandling.Auto,
            Binder = binder
        };
        string json = JsonConvert.SerializeObject(zoo, settings);
        var deserialized = JsonConvert.DeserializeObject<Zoo>(json, settings);

我的自定义绑定程序的两个 BindToType/BindToName 方法都在序列化/反序列化期间调用。

我用BSON尝试了相同的技术,但不幸的是它不起作用。结果不是 Zoo 对象,而是 JObject。看起来结果流不包含任何类型信息,并且在反序列化期间未调用我的绑定程序。

任何建议不胜感激。

您需要

BsonReadRootValueAsArray设置为 true
詹姆斯在这里的回答是:https://stackoverflow.com/a/16949792

相关内容

  • 没有找到相关文章

最新更新