Как использовать Json.NET в качестве десериализатора по умолчанию в приложении ASP.NET MVC 3+?
Есть много ресурсов о том, как заменить библиотеку Json.NET на стандартный сериализатор в приложениях ASP.NET MVC, но для жизни я не могу найти ни одного ресурса о том, как установить его как дескриптор по умолчанию.
Чтобы проиллюстрировать это немного, здесь некоторый код шаблона:
// 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' }
});
Я пробовал адаптировать MediaTypeFormatters
в свой код, отредактировав этот ресурс от Rick Strahl, но это тоже не сработало. Обратите внимание, что я не в среде WebAPI, но я ожидаю, что одно решение, работающее на нормальном Controller
, должно работать (хотя и с минимальными настройками) в ApiController
.
Ответы
Ответ 1
Вам понадобится реализовать собственный ValueProviderFactory и удалить стандартный JsonValueProviderFactory.
Вот пример кода здесь: http://json.codeplex.com/discussions/347099, однако, прочитав комментарии, я не уверен на 100%, что он будет правильно обрабатывать словари.