首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#将JSON对象序列化为一个类

C#将JSON对象序列化为一个类
EN

Stack Overflow用户
提问于 2018-09-29 06:33:33
回答 1查看 64关注 0票数 -4

我正在将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为null。

我做错什么了吗?

更新:因为类的代码太复杂,我只是简化了逻辑。

EN

回答 1

Stack Overflow用户

发布于 2018-09-29 06:52:36

当您调用mo.ToObject<Class1>();时,Newtonsoft.Json库将尝试创建一个实例。问题是你不能实例化一个抽象。您可以通过在代码中的某处调用var x = new Class1();来亲自查看这一点。这会给你带来错误。

也就是说,您可以做的一件事是创建另一个继承抽象类的类。

public class NonAbstract : Class1 {}

这样,您将拥有一个可以实例化的类。然后你就可以这样做了。

mo.ToObject<NonAbstract >();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52563400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档