как использовать JavaScriptSerializer для определенных свойств дочернего класса - PullRequest
1 голос
/ 06 мая 2011

У меня есть класс B, который наследуется от класса A.

Class B:A
{
   public string Prop1{get;set}
   public string Prop2{get;set}
   public string Prop3{get;set}
}

Я хотел бы сериализовать (json) определенные свойства в классе B, например, prop1 и prop2, и ни одного в классе A. Я использую JavaScriptSerializerи это сериализует A и B. Я попытался установить предел рекурсии в 1, но это выдает ошибку.Мне не разрешено редактировать класс A

Пожалуйста, помогите

1 Ответ

5 голосов
/ 06 мая 2011

Я бы определил класс DTO в этом случае:

public class Foo
{
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
}

, а затем использовал AutoMapper для отображения из B экземпляра в Foo.Наконец, я бы JSON сериализировал экземпляр Foo, который был возвращен AutoMapper.Таким образом, у меня есть полный контроль над тем, что сериализуется.

Другая возможность - использовать анонимный объект:

B b = ...
string json = new JavaScriptSerializer().Serialize(new 
{ 
    b.Prop1, b.Prop2 
});

или, если вы хотите переименовать эти свойства в результирующем JSON:

string json = new JavaScriptSerializer().Serialize(new 
{ 
    Foo = b.Prop1, 
    Bar = b.Prop2 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...