我使用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;