C# WCF REST: ¿cómo se usa el serializador JSON.Net en lugar del DataContractSerializer predeterminado?

En .NET 3.5, ¿es posible anular el DataContractJsonSerializer predeterminado y usar el serializador JSON.net en su lugar?

NOTA: No queremos usar atributos en la clase

preguntado el 12 de junio de 12 a las 19:06

1 Respuestas

Sí, es posible hacerlo. Pero no es demasiado simple. Necesitará un nuevo formateador de mensajes que use el serializador JSON.NET en lugar del predeterminado para convertir entre los parámetros de operación y el objeto de mensaje que necesita la pila de WCF. la publicación en http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/03/wcf-extensibility-message-formatters.aspx tiene un ejemplo que hace exactamente eso. El código está escrito para 4.0, pero también debería funcionar para 3.5.

Respondido el 12 de junio de 12 a las 20:06

Buen artículo, pero ¿cómo manejaría las solicitudes XML? - Tawaní

Sí, pero necesitaría cambiar la implementación de WebContentTypeMapper para que solo devuelva "sin formato" para las solicitudes JSON. Luego, el formateador se cambiaría para verificar primero el formato de la solicitud (a través de WebBodyFormatMessageProperty); si es XML (o no Raw), delegue la llamada al formateador original, que puede manejar XML. - carlosfigueira

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.