小编典典

如何忽略仅在Servicestack JSON序列化程序中获取属性?

json

我有一个对象,该对象正在使用ToJson<>()ServiceStack.Text命名空间中的方法进行反序列化。

如何GET在序列化过程中忽略所有唯一属性?有没有类似属性[Ignore]或可以用来装饰属性的东西,可以将其省略?

谢谢


阅读 327

收藏
2020-07-27

共1个答案

小编典典

ServiceStack的文本序列化程序遵循.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";
    }
}

ConditionalSerializationTests.cs中的更多示例

2020-07-27