【问题标题】:How to use Json.NET as default deserializer in an ASP.NET MVC 3+ application?如何在 ASP.NET MVC 3+ 应用程序中使用 Json.NET 作为默认反序列化器?
【发布时间】:2012-09-18 14:44:39
【问题描述】:

有很多关于如何在 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 StrahlMediaTypeFormatters 调整到我的代码中,但这也不起作用。请注意,我不在 WebAPI 环境中 --- 但我希望在普通 Controller 上运行的一种解决方案应该在 ApiController 上运行(尽管调整很小)。

【问题讨论】:

  • 您是否以某种方式解决了这个问题?
  • @Jaap 我记得以前不得不放弃这个,但我确实在下面尝试了 Fatal 的建议,并且在很大程度上奏效了。

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


【解决方案1】:

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

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

【讨论】:

  • 本文不提供使用JsonConverter属性自定义Json转换的方法。
猜你喜欢
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
相关资源
最近更新 更多