2013-03-13 63 views
3

我有一個ASP.NET Web API項目,由於它不支持2個主體參數,我使用JObject參數,然後從中提取實際參數。喜歡這個。訪問ASP.NET Web API中的默認JSON.NET序列化程序

Public bool mymethod(JObject data){ 
    myclassA a = data["a"].toObject<myclassA>(); 
    myclassA b = data["b"].toObject<myclassB>(); 
} 

但是2類類型實現了ISerializable,我需要JSON.NET來忽略它。我已經設置了默認的JSON.NET序列化器來做到這一點,並且在序列化自動完成時工作正常。

但我需要獲取對JSON.NET序列化器中內置的引用,以便我可以在上面的代碼中使用它。

myclassA b = data["b"].toObject<myclassB>(defaultSerializer); 

當前我創建了一個新的JSON.NET序列化實例並使用它。但是,我怎樣才能獲得對asp.net WEB API中默認的序列化程序的引用?

此外,我不能改變類類型中的任何東西,因爲這是我轉換爲web api的遺留應用程序。謝謝。

回答

8

試試這個:

JsonSerializer serializer = JsonSerializer.Create(Configuration.Formatters.JsonFormatter.SerializerSettings); 

這應該給你相同的序列化的Web API使用。

+0

謝謝,實際上我正在使用這個輕微的變化。但是這仍然調用JsonSerializer.Create(),它創建了一個新的串行器實例。我在想如果我可以參考已經由web api本身實例化的序列化程序。 – Amila 2013-03-14 07:13:28

+0

Web API爲每個請求創建一個新的序列化器。所以這並不意味着什麼。 Json串行器是非常輕量級的對象。 – 2013-03-31 00:37:14

+1

我不得不使用'GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings'。 – Dejan 2015-11-07 13:05:47