Json.Net在构造函数

时间:2017-09-19 12:35:57

标签: c# json json.net

我使用Json.Net来序列化和反序列化项目中的对象。 我发现了一些奇怪的东西,我不明白。我已经在一个看起来像这样的小样本应用程序中复制了它。

public class ClassA
{
    public ClassA()
    {
        ObjectList = new List<ClassB>
        {
            new ClassB{SomeProperty="Test1"},
            new ClassB{SomeProperty="Test2"}
        };
    }
    public List<ClassB> ObjectList { get; set; }
}

public class ClassB
{
    public string SomeProperty { get; set; }
}

[TestClass]
public class Class1Tests
{
    [TestMethod]
    public void SerializeAndDeSerilize_ShouldOnlyShowTwoItemsInList()
    {
        var classA = new ClassA();

        var raw = JsonConvert.SerializeObject(classA);

        var newClassA = JsonConvert.DeserializeObject<ClassA>(raw);

        Assert.AreEqual(2, newClassA.ObjectList.Count); //This fails because its actually 4 items in the list.
    }
}

我期待反序列化器能够像这样工作(在高级别上):  1.创建对象的实例(调用构造函数,并创建一个包含2个项目的集合)  2.反序列化json-object的集合部分,并用反序列化的集合覆盖collection属性。

但相反,它似乎是添加项目。 我应该在这种情况下做点什么吗?我想在创建ClassA时确保列表中有两个项目。但是因此我每次反序列化都会添加两个项目。

编辑1: 这是创建的Json字符串: &#34; {\&#34;链表类\&#34;:[{\&#34; SomeProperty \&#34;:\&#34;测试1 \&#34;},{\&#34; SomeProperty \&#34;:\&#34;的Test2 \&#34;}]}&#34;

0 个答案:

没有答案