11

There're a lot of resources on how to substitute the Json.NET library as the default serializer in ASP.NET MVC apps, but, for the life of me, I can't find a single resource on how to set it as the default deserializer.

To illustrate that a bit, here's some template code:

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

}

How do I tell my application to use Json.NET when deserializing incoming parameters in controller actions, say, from a jQuery AJAX call?

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

I've tried adapting MediaTypeFormatters into my code by adjusting this resource from Rick Strahl, but that didn't work either. Note that I'm not in a WebAPI environment --- but I expect that one solution that works on a normal Controller should work (albeit with minimal adjustments) in an ApiController.

Community
  • 1
  • 1
Richard Neil Ilagan
  • 14,627
  • 5
  • 48
  • 66

1 Answers1

2

You'll need to implement a custom ValueProviderFactory and remove the standard JsonValueProviderFactory.

There's some example code here: http://json.codeplex.com/discussions/347099 however reading through the comments, i'm not 100% sure that it will properly handle dictionaries.

Fatal
  • 3,338
  • 3
  • 19
  • 15
  • This article does not provide a way to customize Json conversion using JsonConverter attributes. – Jaap Apr 01 '15 at 15:56