我有一个对象,我正在使用ServiceStack.Text命名空间中的ToJson<>()方法对其进行反序列化。
如何在序列化过程中忽略所有的GET属性?有没有像[Ignore]这样的属性可以用来修饰我的属性,这样就可以省略它们?
谢谢
发布于 2013-02-14 02:00:39
ServiceStack's Text serializers遵循.NET的DataContract序列化程序行为,这意味着您可以使用opt-out [IgnoreDataMember]属性忽略数据成员
public class Poco
{
public int Id { get; set; }
public string Name { get; set; }
[IgnoreDataMember]
public string IsIgnored { get; set; }
}另一种选择是使用[DataMember]来装饰您想要序列化的每个属性。其余的属性没有序列化,例如:
[DataContract]
public class Poco
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
public string IsIgnored { get; set; }
}最后,还有一个不需要属性的非侵入式选项,例如:
JsConfig<Poco>.ExcludePropertyNames = new [] { "IsIgnored" };动态指定应序列化的属性
ServiceStack的序列化程序还通过提供传统命名的ShouldSerialize({PropertyName})方法来指示属性是否应该序列化,从而支持动态控制序列化,例如:
public class Poco
{
public int Id { get; set; }
public string Name { get; set; }
public string IsIgnored { get; set; }
public bool? ShouldSerialize(string fieldName)
{
return fieldName == "IsIgnored";
}
}https://stackoverflow.com/questions/14858641
复制相似问题