无法使用Newtonsoft序列化器从BSON反序列化带有集合属性的对象。

问题描述 投票:2回答:1

我想序列化以下对象。

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格式是没有问题的。

        var settings = new JsonSerializerSettings
        {
            TypeNameHandling = TypeNameHandling.Auto,
            Binder = binder
        };

        string json = JsonConvert.SerializeObject(zoo, settings);
        var deserialized = JsonConvert.DeserializeObject<Zoo>(json, settings);

在序列化序列化的过程中 我的自定义绑定器的BindToTypeBindToName方法都被调用了。

我用BSON尝试了同样的技术,但不幸的是它没有工作。结果不是Zoo对象,而是JObject.看来结果流不包含任何类型信息,而且我的binder在反序列化期间没有被调用。

感谢任何建议。

c# serialization json.net bson
1个回答
0
投票

你需要设置 BsonReadRootValueAsArraytrue. 詹姆斯的答案在这里。https:/stackoverflow.coma16949792。

© www.soinside.com 2019 - 2024. All rights reserved.