JSON.NET - 只读属性&支持IgnoreDataMember

时间:2011-07-14 21:19:01

标签: json.net

JSON.NET是否支持IgnoreDataMember属性,还是必须使用JsonIgnore?这是否会在未来得到支持?

此外,我发现JSON.NET正在序列化只获取的属性 - 这是预期的行为吗?我们可以在串行器级别关闭它吗?

1 个答案:

答案 0 :(得分:9)

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

我们最终使用自定义IContractResolver实现了此功能。我们需要DefaultContractResolver的功能,所以我们从那里得到,然后调整CreateProperty来忽略我们并不真正关心序列化的事情。 E.g。

    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;
        }
    }