56 votos

ASP.Net MVC4 - ajuste el serializador JSON de defecto

Estoy teniendo un tiempo difícil encontrar la respuesta a esta:

Estoy trabajando en una aplicación existente que ha sido parcialmente convertidos a MVC. Cada vez que un controlador responde con un JSON ActionResult, las enumeraciones son enviados como los números de oposición para el nombre de la cadena. Suena como el valor predeterminado serializador debe ser JSON.Net que debe ser el envío de las enumeraciones como sus nombres de oposición para el entero de la representación, pero que no es el caso aquí.

Me estoy perdiendo una web.config configuración que establece este valor como predeterminado serializador? O es que hay otro valor que necesita ser cambiado?

Gracias!

73voto

nemesv Puntos 71516

En ASP.Net MVC4 el valor predeterminado de JavaScript serializador que se utiliza en la JsonResult de la clase es todavía el JavaScriptSerializer (se puede comprobar en el código)

Creo que se han confundido con el ASP.Net Web.La API de donde JSON.Net es el valor predeterminado JS serializador pero MVC4 no la usa.

Por lo que necesita para configurar JSON.Net para trabajar con MVC4 (básicamente, usted necesita para crear su propia JsonNetResult), hay un montón de artículos sobre:

Si también desea utilizar JSON.Net para el controlador de parámetros de acción, por lo que durante el modelo de enlace, a continuación, usted necesita escribir su propia ValueProviderFactory de ejecución.

Y usted necesita registrar su aplicación con:

ValueProviderFactories.Factories
    .Remove(ValueProviderFactories.Factories
                                  .OfType<JsonValueProviderFactory>().Single());
ValueProviderFactories.Factories.Add(new MyJsonValueProviderFactory());

Usted puede utilizar el construido en JsonValueProviderFactory como un ejemplo de este artículo: ASP.NET MVC 3 – Mejora de la JsonValueProviderFactory el uso de Json.Net

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: