2012-09-11 16 views
11

Hay muchos recursos sobre cómo sustituir la biblioteca Json.NET como el default serializer en las aplicaciones ASP.NET MVC, pero, durante toda la vida, no puedo encontrar un solo recurso sobre cómo configurarlo como el deserializador predeterminado .¿Cómo se usa Json.NET como deserializador predeterminado en una aplicación ASP.NET MVC 3+?

para ilustrar que un poco, aquí hay un código de plantilla:

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

} 

¿Cómo le digo a mi aplicación para utilizar Json.NET al deserializar parámetros entrantes en las acciones del controlador, por ejemplo, de un jQuery AJAX llamar?

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

He intentado adaptar MediaTypeFormatters en mi código ajustando this resource from Rick Strahl, pero eso no funcionó bien. Tenga en cuenta que no estoy en un entorno WebAPI --- pero espero que una solución que funcione en un Controller normal funcione (aunque con ajustes mínimos) en un ApiController.

+0

¿Solucionó este problema de alguna manera? – Jaap

+0

@Jaap Recuerdo tener que soltar esto antes, pero probé la sugerencia de Fatal a continuación y eso funcionó en gran medida. –

Respuesta

2

Deberá implementar una ValueProviderFactory personalizada y eliminar la JsonValueProviderFactory estándar.

Hay un código de ejemplo aquí: http://json.codeplex.com/discussions/347099 Sin embargo, leyendo los comentarios, no estoy 100% seguro de que manejará correctamente los diccionarios.

+0

Este artículo no proporciona una forma de personalizar la conversión de Json utilizando los atributos de JsonConverter. – Jaap

Cuestiones relacionadas