首页 新闻 会员 周边

关于Newtonsoft.Json转换继承类的问题

2
[已解决问题] 解决于 2018-05-29 09:19

public class A{
    public string Name = "A class";
}

public class B : A {
    public string Memo = "B Class";
}

var b = new B();
JsonConvert.SerializeObject(b as A);

如上,如果一个B的实列,我想转成JSON串只包含A的属性,JsonConvert.SerializeObject()方法传入的是object类型,所以无论怎样转换还是会包含B的属性,但是又没有泛型相关的转换方法

有没有办法只把A的属性转换为JSON,不构造匿名类的情况下?

Hanf的主页 Hanf | 菜鸟二级 | 园豆:202
提问于:2018-05-21 11:31
< >
分享
最佳答案
1

一个变通方法:先序列化b(B类型),然后反序列化为a(A类型),然后再进行序列化

class Program
{
    static void Main(string[] args)
    {
        var b = new B();
        var bJson = JsonConvert.SerializeObject(b);
        var a = JsonConvert.DeserializeObject<A>(bJson);
        var aJson =  JsonConvert.SerializeObject(a);
        Console.WriteLine(aJson);
    }
}

public class A
{
    public string Name = "A class";
}

public class B : A
{
    public string Memo = "B Class";
}
奖励园豆:5
dudu | 高人七级 |园豆:30925 | 2018-05-21 13:36

哇。。。传说中的dudu

Hanf | 园豆:202 (菜鸟二级) | 2018-05-22 16:22
其他回答(1)
1

你就不能先把B复制到A里面去么?用AutoMapper

var a=b.MapTo<a>();

然后再序列化a就行了。

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-05-21 11:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册