[英]C# serialize JSON Object to a class
我正在将 Json Obejct 反序列化为 Win 7 上的 .net VS2015 中的一个类。
public class1
{
[JsonProperty(TypeNameHandling = TypeNameHandling.Objects)]
public Class1 data1;
public Class2 data2;
}
public abstract Class1
{
some functions
}
public subClass1 : Class1
{
public string myData1 { get; set; }
public string myData2 { get; set; }
}
在我的反序列化代码中:
var mo = MyObject as JObject;
ParentMyClass = mo.ToObject<MyClass>();
我知道抽象类不能被实例化。 因此,subClass1(它是 Class1 的实现之一)被序列化。 但是,反序列化后 subClass1 为空。
我做错什么了吗 ?
更新:因为类的代码太复杂,我只是简化了逻辑。
当你调用mo.ToObject<Class1>();
Newtonsoft.Json 库将尝试创建一个实例。 问题是你不能实例化一个抽象。 您可以通过调用var x = new Class1();
来查看自己的情况var x = new Class1();
在你的代码中的某个地方。 这会给你错误。
话虽如此,您可以做的一件事是创建另一个继承抽象类的类。
public class NonAbstract : Class1 {}
这样,您将拥有一个可以实例化的类。 然后你就可以做到这一点。
mo.ToObject<NonAbstract >();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.