【发布时间】:2011-09-09 03:42:59
【问题描述】:
JSON.NET 是否支持IgnoreDataMember 属性,还是我必须使用JsonIgnore 来代替?这是将来会支持的东西吗?
此外,我发现 JSON.NET 正在序列化仅获取的属性 - 这是预期的行为吗?我们可以在序列化程序级别关闭它吗?
【问题讨论】:
标签: json.net
JSON.NET 是否支持IgnoreDataMember 属性,还是我必须使用JsonIgnore 来代替?这是将来会支持的东西吗?
此外,我发现 JSON.NET 正在序列化仅获取的属性 - 这是预期的行为吗?我们可以在序列化程序级别关闭它吗?
【问题讨论】:
标签: json.net
回答我自己的问题,但认为它可能对其他人有帮助......
我们最终使用自定义 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;
}
}
【讨论】: