Поддерживает ли JSON.NET атрибут IgnoreDataMember
или мне нужно использовать JsonIgnore
вместо этого? Это что-то, что будет поддерживать в будущем?
Кроме того, я обнаружил, что JSON.NET сериализует только те свойства, которые только получают - это предполагаемое поведение? Это то, что мы можем отключить на уровне сериализатора?
Ответ 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;
}
}