JSON.NET是否支持IgnoreDataMember
属性,还是必须使用JsonIgnore
?这是否会在未来得到支持?
此外,我发现JSON.NET正在序列化只获取的属性 - 这是预期的行为吗?我们可以在串行器级别关闭它吗?
答案 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;
}
}