我有一个对象,该对象正在使用ToJson<>()ServiceStack.Text命名空间中的方法进行反序列化。
ToJson<>()
如何GET在序列化过程中忽略所有唯一属性?有没有类似属性[Ignore]或可以用来装饰属性的东西,可以将其省略?
GET
[Ignore]
谢谢
ServiceStack的文本序列化程序遵循.NET的DataContract序列化程序行为,这意味着您可以使用opt- out [IgnoreDataMember]属性忽略数据成员
[IgnoreDataMember]
public class Poco { public int Id { get; set; } public string Name { get; set; } [IgnoreDataMember] public string IsIgnored { get; set; } }
选择加入的方法是装饰要序列化的每个属性[DataMember]。其余属性未序列化,例如:
[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})方法来指示是否应序列化属性,从而支持动态控制序列化,例如:
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"; } }
ConditionalSerializationTests.cs中的更多示例