如何在子类的某些属性上使用JavaScriptSerializer

Dav*_*vid 1 c# serialization json

我有一个继承自A类的B类.

Class B:A
{
   public string Prop1{get;set}
   public string Prop2{get;set}
   public string Prop3{get;set}
}
Run Code Online (Sandbox Code Playgroud)

我想序列化(JSON)在B类的某些属性说PROP1和PROP2并没有在A级.我使用JavaScriptSerializer这种序列化A和B.我试着设置递归限制为1而是抛出一个错误.我不允许编辑A类

请帮忙

Dar*_*rov 5

在这种情况下我会定义一个DTO类:

public class Foo
{
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后使用AutoMapperB实例映射到Foo.最后,我将JSON序列化Foo返回的实例AutoMapper.通过这种方式,我可以完全控制序列化的内容.

另一种可能性是使用匿名对象:

B b = ...
string json = new JavaScriptSerializer().Serialize(new 
{ 
    b.Prop1, b.Prop2 
});
Run Code Online (Sandbox Code Playgroud)

或者如果要在生成的JSON中重命名这些属性:

string json = new JavaScriptSerializer().Serialize(new 
{ 
    Foo = b.Prop1, 
    Bar = b.Prop2 
});
Run Code Online (Sandbox Code Playgroud)