0
我使用ASP.NET的WebAPI返回從一個程序集的對象,我不能更改源代碼。控制ASP.NET的WebAPI JSON序列沒有訪問源代碼
我想刪除一個屬性從響應,但我不能簡單地添加[JsonIgnore]該屬性,因爲我無法編輯我正在返回的類。
有沒有辦法指定一個單獨的屬性忽略列表?
有序列化是在使用確定()方法的瞬間自動發生的事情:
return Ok(myObject);
我使用ASP.NET的WebAPI返回從一個程序集的對象,我不能更改源代碼。控制ASP.NET的WebAPI JSON序列沒有訪問源代碼
我想刪除一個屬性從響應,但我不能簡單地添加[JsonIgnore]該屬性,因爲我無法編輯我正在返回的類。
有沒有辦法指定一個單獨的屬性忽略列表?
有序列化是在使用確定()方法的瞬間自動發生的事情:
return Ok(myObject);
您可以創建自定義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;
}
}