2014-03-24 57 views
0

我使用ASP.NET的WebAPI返回從一個程序集的對象,我不能更改源代碼。控制ASP.NET的WebAPI JSON序列沒有訪問源代碼

我想刪除一個屬性從響應,但我不能簡單地添加[JsonIgnore]該屬性,因爲我無法編輯我正在返回的類。

有沒有辦法指定一個單獨的屬性忽略列表?

有序列化是在使用確定()方法的瞬間自動發生的事情:

return Ok(myObject); 

回答

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; 
    } 
}