JSON.NET - 只读属性和 IgnoreDataMember 的支持

4
JSON.NET支持JsonIgnore属性,但不支持IgnoreDataMember属性。这是否在将来得到支持还不确定。
此外,我发现JSON.NET正在序列化只读属性 - 这是有意为之的行为吗?我们可以在序列化器级别上关闭它吗?
1个回答

9

回答自己的问题,但认为这可能对其他人有所帮助...

我们最终使用自定义的IContractResolver来实现这一点。我们想要DefaultContractResolver的功能,因此我们从中派生,然后调整CreateProperty以忽略我们不太关心的序列化内容。例如:

    internal class IgnoreDataMemberContractResolver : DefaultContractResolver
    {
        protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
        {
            JsonProperty property =  base.CreateProperty(member, memberSerialization);
            property.Ignored |= member.GetCustomAttributes(typeof(IgnoreDataMemberAttribute), true).Length > 0;
            return property;
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接