首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何省略servicestack json序列化程序中的Get only属性?

如何省略servicestack json序列化程序中的Get only属性?
EN

Stack Overflow用户
提问于 2013-02-14 00:49:35
回答 2查看 12.6K关注 0票数 30

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

如何在序列化过程中忽略所有的GET属性?有没有像[Ignore]这样的属性可以用来修饰我的属性,这样就可以省略它们?

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2013-02-14 02:00:39

ServiceStack's Text serializers遵循.NET的DataContract序列化程序行为,这意味着您可以使用opt-out [IgnoreDataMember]属性忽略数据成员

代码语言:javascript
复制
public class Poco 
{
    public int Id { get; set; }

    public string Name { get; set; }

    [IgnoreDataMember]
    public string IsIgnored { get; set; }
}

另一种选择是使用[DataMember]来装饰您想要序列化的每个属性。其余的属性没有序列化,例如:

代码语言:javascript
复制
[DataContract]
public class Poco 
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name { get; set; }

    public string IsIgnored { get; set; }
}

最后,还有一个不需要属性的非侵入式选项,例如:

代码语言:javascript
复制
JsConfig<Poco>.ExcludePropertyNames = new [] { "IsIgnored" };

动态指定应序列化的属性

ServiceStack的序列化程序还通过提供传统命名的ShouldSerialize({PropertyName})方法来指示属性是否应该序列化,从而支持动态控制序列化,例如:

代码语言:javascript
复制
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中的更多示例

票数 57
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14858641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档