2012-09-11 63 views
11

關於如何將Json.NET庫替換爲ASP.NET MVC應用程序中的default serializer,有很多資源,但對於我而言,我無法找到關於如何將其設置爲默認解串器如何在ASP.NET MVC 3+應用程序中使用Json.NET作爲默認的反序列化器?

要說明一點,這裏的一些模板代碼:

       // how to use Json.NET when deserializing 
           // incoming arguments? 
            V 
public ActionResult SomeAction (Foo foo) { 

    // this piece of code has lots of resources 
    // on how to override the default Javascript serializer 
    return Json(new Bar()); 

} 

我如何告訴我的應用程序使用Json.NET在控制器動作,比如說反序列化傳入的參數時,從一個jQuery AJAX調用?

$.ajax({ 
    type : 'POST', 
    data : { foo : 'bar' } 
}); 

我試圖通過調整this resource from Rick Strahl適應MediaTypeFormatters到我的代碼,但是這也不能工作。請注意,我並不處於WebAPI環境---但我期望在ApiController中的正常Controller上運行的一種解決方案應該可以正常工作(儘管調整很小)。

+0

你是否以某種方式解決了這個問題? – Jaap

+0

@Jaap我記得之前不得不放棄這個,但我確實嘗試了下面的Fatal的建議,並且在很大程度上起作用。 –

回答

2

您需要實現自定義的ValueProviderFactory並刪除標準的JsonValueProviderFactory。

這裏有一些示例代碼:http://json.codeplex.com/discussions/347099但是通過閱讀的意見,我不是100%確定它會妥善處理字典。

+0

本文不提供使用JsonConverter屬性定製Json轉換的方法。 – Jaap