#c# #json #serialization
#c# #json #сериализация
Вопрос:
У меня есть класс 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:
В этом случае я бы определил класс 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
});