我正在使用ASP.NET WebAPI从程序集中返回一个我无法更改源代码的对象。
我想从响应中删除一个属性,但我不能简单地将[JsonIgnore]添加到该属性,因为我无法编辑我要返回的类。
有没有办法指定一个单独的属性忽略列表?
目前使用Ok()方法自动进行序列化:
return Ok(myObject);
答案 0 :(得分:0)
您可以创建自定义Newtonsoft.Json.Serialization.IContractResolver
以有条件地序列化属性。
有关Json.net在此空间中的支持的更多信息,您可以查看以下链接: http://james.newtonking.com/json/help/index.html?topic=html/ContractResolver.htm
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new ShouldSerializeContractResolver();
public class ShouldSerializeContractResolver : System.Net.Formatting.JsonContractResolver
{
public new static readonly ShouldSerializeContractResolver Instance = new ShouldSerializeContractResolver();
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
if (property.DeclaringType == typeof(Employee) && property.PropertyName == "Manager")
{
property.ShouldSerialize =
instance =>
{
Employee e = (Employee)instance;
return e.Manager != e;
};
}
return property;
}
}