2011-07-22 15 views
10

Es posible reemplazar la serialización JSON predeterminada de WCF (actualmente estoy probando con el comportamiento webHttp) y pasar application/json como el tipo MIME. En particular, no me gusta que, por defecto cada propiedad es un par clave/valor como:Reemplazar la serialización JSON predeterminada de WCF

{"Key":"PropertyName", "Value":"PropertyValue"} 

estoy usando el servicio sólo para los puntos finales habilitados para JSON (solicitud de datos con jQuery + WCF).

+0

Vea si esto ayuda: http://stackoverflow.com/questions/8372076/post-json-dictionary-without-key-value-text/38440427#38440427 –

Respuesta

11

Puede usar un formateador de mensajes para cambiar el serializador utilizado para tratar con JSON. La publicación en http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/03/wcf-extensibility-message-formatters.aspx muestra un ejemplo sobre cómo cambiar el serializador predeterminado (DataContractJsonSerializer) a otro (JSON.NET).

+0

Gracias Carlos. No fue fácil pero finalmente lo puse en funcionamiento. (Olvidé el contentTypeMapper :))) – jaraics

+0

Brilliant blog post. Haciéndolo súper fácil de admitir formato JSON y XML incluso utilizando la variación de NewtonSoft. :) –

-1

Considere crear clases correspondientes a su estructura de objeto JSON. En ese caso, usted no tiene que utilizar Dictionary<> como:

[DataContract] 
public class Customer 
{ 
    [DataMember(Name="name")] 
    public string Name{get;set;} 

    [DataMember(Name="id")] 
    public int ID{get;set;} 
} 

Este conseguir serializado como:

{"name": "name-value", "id": "id-value"} 

Por supuesto, esto es sólo una alternativa a lo que ya tiene y puede no ser aplicable .

Cuestiones relacionadas