c # DataContractJsonSerializer исключая поля во время выполнения - PullRequest
0 голосов
/ 05 июня 2009

Можно ли исключить указанные поля во время выполнения при сериализации объекта в строку JSON? при сериализации объекта только сериализуются поля, указанные в списке.

Ответы [ 2 ]

5 голосов
/ 05 июня 2009

Любые свойства, которые не имеют атрибута [DataMember] , не будут сериализованы

[DataContract]
public class MyClass
{
  [DataMember]
  public string SerializeMe {get;set;}

  public string DontSerializeMe {get;set;}

  [DataMember]
  public string SerializeMeToo {get;set;}
}
2 голосов
/ 07 июня 2009

DataContractJsonSerializer не включен, поэтому включены только поля с пометкой DataMemberAttribute.

Я хотел изменить это во время выполнения (как программно исключить определенные поля в зависимости от определенных условий), чтобы исключить поля, которые являются нулевыми, но это поведение по умолчанию. Так что, думаю, это уже не актуально.

Обновление, также может быть использовано следующее:

public DateTime DateOfBirth;

[DataMember] public bool Confidential;

[DataMember (Name="DateOfBirth", EmitDefaultValue=false)]
DateTime? _tempDateOfBirth;

[OnSerializing]
void PrepareForSerialization (StreamingContext sc)
{
  if (Confidential)
    _tempDateOfBirth = DateOfBirth;
  else
    _tempDateOfBirth = null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...