如何在ASP.NET MVC 3+应用程序中使用Json.NET作为默认反序列化器?

时间:2012-09-11 17:33:19

标签: asp.net-mvc-3 json.net

关于如何在ASP.NET MVC应用程序中将Json.NET库替换为default serializer,有很多资源,但是,就我而言,我找不到一个资源。如何将其设置为默认反序列化器

为了说明这一点,这里有一些模板代码:

                              // 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());

}

如果在控制器操作中反序列化传入参数(例如,从jQuery AJAX调用中),如何告诉我的应用程序使用Json.NET?

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

我已经尝试通过调整this resource from Rick Strahl来调整MediaTypeFormatters到我的代码中,但这也不起作用。请注意,我不在WebAPI环境中---但我希望在Controller中使用一个适用于普通ApiController的解决方案(尽管调整很少)。

1 个答案:

答案 0 :(得分:2)

您需要实现自定义ValueProviderFactory并删除标准的JsonValueProviderFactory。

这里有一些示例代码:http://json.codeplex.com/discussions/347099但是通过阅读评论,我并不是100%确定它会正确处理字典。