Подтвердить что ты не робот

JSON.NET - свойства и поддержка только для чтения для IgnoreDataMember

Поддерживает ли JSON.NET атрибут IgnoreDataMember или мне нужно использовать JsonIgnore вместо этого? Это что-то, что будет поддерживать в будущем?

Кроме того, я обнаружил, что JSON.NET сериализует только те свойства, которые только получают - это предполагаемое поведение? Это то, что мы можем отключить на уровне сериализатора?

4b9b3361

Ответ 1

Отвечая на мой собственный вопрос, но подумал, что это может быть полезно другим...

Мы завершили реализацию этого, используя пользовательский 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;
        }
    }